VI編輯器_終端編輯器

1 簡介

學習vi的目的

  • 在工作中, 要對服務器上的 文件進行 簡單 的修改, 可以使用 ssh 登錄到遠程服務器上, 並且使用 vi編輯器 進行簡單的編輯即可
  • 需要修改的文件包括
    • 源代碼
    • 配置文件
      • 例如: tomcat服務器的配置文件
      • 例如: 網卡信息的配置文件

在沒有圖形界面的環境下, 要編輯文件, vi是最佳選擇
每一個使用linux的程序員,都應該或多或少的學習一些vi的常用命令

vi 和 vim

VI

  • vi是 visual interface的簡稱, 是linux中最經典的文本編輯器
  • vi 的核心設計思想
    讓程序員的手指始終保持在鍵盤的 核心區域, 就能完成所有的編輯操作
  • vi的特點
    • 只能是編輯 文本內容, 不能對 字體 段落進行排版
    • 不支持鼠標操作
    • 沒有菜單
    • 只有命令
  • vi編輯器在 系統管理 服務器管理 編輯文件時, 其功能永遠不是圖形界面的編輯器能比擬的

VIM

vim 是從vi發展出來的文本編輯器, 支持代碼補全、編譯 及 錯誤跳轉等方便編程的功能提別豐富, 在程序員中被廣泛使用, 被稱爲編輯器之神

2 打開和新建文件

在終端中輸入vim在後面跟上 文件名 即可

vim 文件名
  • 如果文件已經存在, 會直接打開該文件
  • 如果文件不存在, 保存且退出時 就會新建一個文件

打開文件並且定位行

  • 在日常工作中, 有可能會遇到打開一個文件, 並定位到指定行的情況
  • 例如: 在開發是, 知道某一行代碼有錯誤, 可以 快速定位 到出錯誤代碼的位置
  • 這個時候, 可以使用以下命令打開文件
vim 文件名 +行數

提示: 如果只帶上+ 而不指定行號, 會直接定位到文件末尾

VI三種工作模式

  • VI有三種工作模式
  1. 命令模式
    • 打開文件首先進入命令模式, 是使用vi的入口
    • 通過 命令 對文件進行常規的編輯操作, 例如 定位 翻頁 複製 粘貼 刪除 … …
    • 在其他圖形編輯器下, 通過 快捷鍵 或者 鼠標 實現的操作, 都在 命令模式 下實現
    • 任何時候,不管用戶處於何種模式,按下Esc鍵即可進入命令模式
  2. 末行模式 – 執行 保存 退出等操作
    • 要退出 vi 返回到控制檯, 需要在莫行模式下輸入命令
    • 末行模式 是 vi 的出口
    • 在命令模式下,用戶按:鍵即可進入末行模式下,末行命令執行完後,vi 自動回到命令模式
  3. 編輯模式 – 正常的編輯文字
    • 在命令模式下輸入插入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s都可以進入文本輸入模式。

末行模式命令

命令 英文 功能
w write 保存
q quit 退出,如果沒有保存,不允許退出
q! quit 強行退出,不保存退出
wq write & quit 保存且退出
x 保存並退出
ZZ 保存並退出(命令模式)

3 常用命令

學習提示

  1. vi命令較多, 不要期望一下子全部都記住, 個別命令忘記了, 只是會影響編輯速度而已
    . 在使用vi命令時, 注意 關閉中文輸入法

移動

要熟練使用vi, 首先應該學會怎麼在 命令模式下 快速移動光標
編輯操作命令 能夠和移動命令一起使用

1) 上 下 左 右

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 無名指

2) 行內移動

命令 英文 功能
w word 向後移動一個單詞
b back 向前移動一個單詞
0 行首
^ 行首, 第一個不是空白字符的位置
$ 行尾

3) 行數移動

命令 英文 功能
gg go 文件頂部
G go 文件末尾
數字gg go 移動到 數字 對應行數
數字G go 移動到 數字 對應行數
: 數字 移動到數字對應的 行數

4) 屏幕移動

命令 英文 功能
Ctrl + b back 向上翻頁
Ctrl + f forward 向下翻頁
H Head 屏幕頂部
M Middle 屏幕中間
L Low 屏幕底部

移動(程序)

1) 段落移動

  • vim中使用 空行 來區分段落

  • 程序開發時, 通常 一段功能相關的代碼會寫在一起 – 之間沒有空行

    命令 功能
    { 上一段
    } 下一段

2) 括號切換

  • 在程序世界中, **()、[]、{}**使用率很高, 而且 都是成對出現的.

    命令 功能
    % 括號匹配及切換

選中文本(可視模式)

  • 學習 複製 命令前, 應該先學會 怎麼樣選中 要複製的代碼
  • 在 vi 中要選擇文本, 需要顯示 visual 命令切換到 可視模式
  • vi 中提供了 三種 可視模式, 可以方便程序員的選擇 選中文本的方式
  • 按 ESC 可以放棄選中, 返回到 命令模式
命令 模式 功能
v 可視模式 從光標位置開始按照正常模式選擇文本
V 可視化模式 選中光標經過的完整行
Ctrl + v 可視塊模式 垂直方向選中文本
  • 可視模式下, 可以和 移動命令 連用, 例如 ggVG 能夠 選中所有的內容

撤銷和恢復撤銷(保命指令)

在學習編輯命令之前,先要知道怎樣撤銷之前一次 錯誤的 編輯操作

命令 英文 功能
u undo 撤銷上次的命令(ctrl + z)
Ctrl + r uredo 恢復撤銷的命令

刪除文本

命令 英文 功能
x cut 刪除光標所在的字符,或者選中的文字
d(移動命令) delete 刪除移動命令對應的內容
dd delete 刪除光標所在行, 可以ndd刪除多行
D delete 刪除至行尾

提示: 如果使用 可視模式 已經選中了一段文本, 那麼無論使用 d 還是 x, 都可以刪除選中文本

刪除命令可以和移動命令連用, 以下是常見的組合命令:

命令 作用
dw 從光標位置刪除到單詞末尾
d0 從光標位置刪除到一行的起始位置
d} 從光標位置刪除到段落末尾
ndd 從光標位置向下連續刪除 n 行

修改文本

如果你希望對字符、單詞或行進行修改,可以使用下面的命令:

命令 描述
cc 刪除當前行,並進入編輯模式。
cw 刪除當前字(單詞),並進入編輯模式。
r 替換當前光標下的字符。
R 從當前光標開始替換字符,按 Esc 鍵退出。
s 用輸入的字符替換當前字符,並進入編輯模式。
S 用輸入的文本替換當前行,並進入編輯模式。

複製和剪切

  • vi 中提供有一個 被複制文本的緩衝區
    • 複製 命令會將選中的文字保存在緩衝區
    • 刪除 命令刪除的文字會被保存在緩衝區
    • 在需要的位置, 使用 粘貼 命令可以將緩衝對的文字插入到光標所在的位置
命令 英文 功能
y(複製命令) copy 複製
yy copy 複製一行,可以nyy複製多行
d(剪切命令) delete 剪切
dd(剪切) delete 剪切一行, 可以 ndd 剪切n行
p paste 粘貼

提示:

  • 命令 d 、x 類似於圖形界面的 剪切操作 – ctrl + x
  • 命令 y 類似於 圖形界面的 複製操作 – Ctrl + C
  • 命令 p 類似於圖形界面的 粘貼操作 – Ctrl + v
  • vi中的文本緩衝區只有一個,如果後續做過 複製、剪切操作, 之前緩衝區中的內容會被替換.

注意

  • vi中的 文本緩衝區 和 系統的 剪切板 不是同一個
  • 所以在其他軟件中使用 Ctrl + C 複製的內容, 不能再 vi 中通過 p 命令粘貼
  • 可以在 編輯模式 下使用 鼠標右鍵粘貼

替換

命令 英文 功能 工作模式
r replace 替換當前字符 命令模式
R replace 替換當前行光標後的字符 替換模式
  • R 命令可以進入 替換模式, 替換完成後, 按下ESC , 按下 ESC 可以回到 命令模式
  • 替換命令 的作用就是不用進入 編輯模式, 對文件進行 輕量級的修改

查找

常規查找

命令 功能
/str 查找str
  • 查找到指定內容之後, 使用 Next 查找下一個出現的位置

    • n : 查找下一個
    • N : 查找上一個
  • 如果不想看到高亮顯示, 可以隨便查找一個文件中不存在的內容即可

  • 單詞快速匹配

命令 功能
* 向後查找當前光標所在單詞
# 向前查找當前光標所在單詞
  • 在開發中, 通過單詞快速匹配, 可以快速看到這個單詞在其他位置使用過

查找並替換

  • vi 中查找和替換命令需要在 末行模式 下執行
  • 記憶命令格式
:%s///g
  1. 全局替換
  • 一次向 替換文件中的 所有出現的舊文本

  • 命令格式如下

    :%s/舊文本/新文本/g
    
  1. 可視區域替換
  • 先選中 要替換文字的 範圍
  • 命令格式如下
:s/舊文本/新文本/g
  1. 確認替換

confirm 確認

  • 如果把末尾的 g 改成 gc 在替換的時候, 會有提示! 推薦使用

  • 命令格式如下

    :%s/舊文本/新文本/gc
    
  1. y - yes 替換
  2. n - no 不替換
  3. a - all 替換所有
  4. q -quit 退出替換
  5. l - last 最後一個, 並把光標移動到行首
  6. ^E 向下滾屏
  7. ^Y 向上滾屏

插入命令

  • 在 vi 中除了常用 i 進入編輯模式 外, 還提供了一下命令同樣可以進入編輯模式
命令 英文 功能 常用
i insert 在當前字符前插入文本 常用
I insert 在行首插入文本 較常用
a append 在當前字符後添加文本
A append 在行末添加文本 較常用
o 在當前行後面插入一空行 常用
O 在當前行前面插入一空行 常用

高級命令

下面的一些命令雖然看起來有些古怪,但是會讓你的工作更有效率,如果你是 vi 重度用戶,就瞭解一下吧。

命令 說明
J 將當前行和下一行連接爲一行
<< 將當前行左移一個單位(一個縮進寬度)
>> 將當前行右移一個單位(一個縮進寬度)
~ 改變當前字符的大小寫
^G Ctrl+G組合鍵可以顯示當前文件名和狀態
U 撤銷對當前行所做的修改
u 撤銷上次操作,再次按 ‘u’ 恢復該次操作
:f 以百分號(%)的形式顯示當前光標在文件中的位置、文件名和文件的總行數
:f filename 將文件重命名爲 filename
:w filename 保存修改到 filename
:e filename 打開另一個文件名爲 filename 的文件
:cd dirname 改變當前工作目錄到 dirname
:e # 在兩個打開的文件之間進行切換
:n 如果用 vi 打開了多個文件,可以使用 :n 切換到下一個文件
:p 如果用 vi 打開了多個文件,可以使用 :n 切換到上一個文件
:N 如果用 vi 打開了多個文件,可以使用 :n 切換到上一個文件
:r file 讀取文件並在當前行的後邊插入
:nr file 讀取文件並在第 n 行後邊插入

set 命令

set 命令可以對 vi 編輯器進行一些設置。使用 set 命令需要進入命令模式。

命令 說明
:set ic 搜索時忽略大小寫。
:set ai 設置自動縮進(自動對齊)。
:set noai 取消自動縮進(自動對齊)。
:set nu 顯示行號。
:set sw 設置縮進的空格數,例如,將縮進空格數設置爲4::set sw=4。
:set ws 循環搜索:如果直到文件末尾也沒有查找到指定字符,那麼會回到開頭繼續查找。
:set wm 設置自動換行,例如,設置距離邊際2個字符時換行::set wm=2 。
:set ro 將文件類型改爲只讀。
:set term 輸出終端類型。
:set bf 忽略輸入的控制字符,如 BEL(響鈴)、BS(退格)、CR(回車)等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章