1.簡單說明一下vim
2.三種工作模式
1)普通模式
3)命令模式
在普通模式中,輸入【:/?】這三個中任何一個字符後,光標將移動到最低那一行,然後輸入你想要執行的命令,在命令模式下,用戶可以對文件進行一些高級處理。儘管普通模式下的命令可以完成很多功能,但要執行一些如字符串查找、替換、顯示行號等操作還是必須要進入命令模式。
注意:有些教程中稱有兩種工作模式,是把命令模式合併到普通模式。
3.工作模式切換:
字符 說明
q 退出不保存,這時會提示你是否保存。
q! 強行退出,不保存修改內容。
wq 保存並退出。
ZZ 保存並退出,相當於 wq。
:w /root/test.bak
注意:
2).如果不確定當前處於哪種模式,按兩次 Esc 鍵將回到普通模式。
4.移動光標
為了不影響文件內容,必須在普通模式(按兩次Esc鍵)下移動光標。使用下表中的命令每次可以移動一個字符:
命令 說明
k 向上移動光標(移動一行)
j 向下移動光標(移動一行)
h 向左移動光標(移動一個字符)
l 向右移動光標(移動一個字符)
注意:
1).vi 是區分大小寫的,輸入命令時注意不要鎖定大寫。
2).可以在命令前邊添加一個數字作為前綴,例如,2j 將光標向下移動兩行。
當然還有很多其他命令來移動光標,大概列一下:
命令 說明
0 或 | 將光標定位在一行的開頭。
$ 將光標定位在一行的末尾。
w 定位到下一個單詞。
b 定位到上一個單詞。
( 定位到一句話的開頭。
) 定位到一句話的結尾。
{ 移動到段落開頭。
} 移動到段落結束。
[[ 回到段落的開頭處。
]] 向前移到下一個段落的開頭處。
n| 移動到第 n 列(當前行)。
1G 移動到文件第一行。
G 移動到文件最後一行。
nG 移動到文件第 n 行。
:n 移動到文件第 n 行。
H 移動到屏幕頂部。
nH 移動到距離屏幕頂部第 n 行的位置。
M 移動到屏幕中間。
L 移動到屏幕底部。
nL 移動到距離屏幕底部第 n 行的位置。
:x x 代表一個數字,如5就移到第5行。
5.控制命令
有一些控制命令可以與 Ctrl 鍵組合使用,如下:
命令 說明
CTRL+d 向前滾動半屏
CTRL+f 向前滾動全屏
CTRL+u 向後滾動半屏
CTRL+b 向後滾動整屏
CTRL+e 向上滾動一行
CTRL+y 向下滾動一行
CTRL+I 刷新屏幕
6.刪除字符
命令 說明
x 刪除當前光標下的字符
X 刪除光標前面的字符
dw 刪除從當前光標到單詞結尾的字符
d^ 刪除從當前光標到行首的字符
d$ 刪除從當前光標到行尾的字符
D 刪除從當前光標到行尾的字符
dd 刪除當前光標所在的行
注:可以在命令前面添加一個數字前綴,表示重複操作的次數,例如,2x 表示連續兩次刪除光標下的字符,2dd 表示連續兩次刪除光標所在的行。
7.修改文本
命令 說明
r 替換當前光標下的字符。
R 從當前光標替換字符。
8.粘貼複製
命令 描述
yy 複製當前行
nyy 複製n行
yw 複製一個字(單詞)
nyw 複製n行
p 將複製的文本粘貼到光標後面
P 將複製的文本粘貼到光標前面
9.文本查找
如果希望進行全文件搜索,可以在普通模式(按兩次 Esc 鍵)下輸入 / 命令,這時狀態欄(最後一行)出現"/"並提示輸入要查找的字符串,回車即可。/ 命令是向下查找,如果希望向上查找,可以使用 ? 命令。這時,輸入 n 命令可以按相同的方向繼續查找,輸入 N 命令可以按相反的方向繼續查找。如果希望搜索某行中的單個字符,可以使用 f 或 F 命令,f 向上搜索,F 向下搜索,並且會把光標定位到匹配的字符。也可以使用 t 或 T 命令:t 命令向上搜索,並把光標定位到匹配字符的前面;T 命令向下搜索,並把光標定位到匹配字符的後面。搜索的字符串中可以包含一些有特殊含義的字符,如果希望搜索這些字符本身,需要在前面加反斜槓(\)。部分特殊字符列表如下:
字符 說明
^ 匹配一行的開頭
. 匹配一個字符
* 匹配0個或多個字符
$ 匹配一行的結尾
[ ] 匹配一組字符
10.set 命令
使用 set 命令需要進入命令模式。
命令 說明
:set ic 搜索時忽略大小寫。
:set ai 設置自動縮進(自動對齊)。
:set noai 取消自動縮進(自動對齊)。
:set nu 顯示行號。
:set sw 設置縮進空格數,如:set sw=4。
:set ws 循環搜索。
:set wm 設置自動換行,如:set wm=2 。
:set ro 將文件類型改為只讀。
:set term 輸出終端類型。
:set bf 忽略輸入控制字符,如 BEL等。
11.運行命令
切換到命令模式,再輸入 ! 命令即可運行 Linux 命令。
例如,保存文件前,如果希望查看該文件是否存在,那麼輸入
:! ls
12.文本替換
切換到命令模式,再輸入 s/ 命令即可對文本進行替換。語法為:
:s/search/replace/g
解釋:search 為檢索的文本,replace 為要替換的文本,g 表示全局替換。
13.高級命令
命令 說明
J 將當前行和下一行連接為一行
<< 將當前行左移一個單位
>> 將當前行右移一個單位
~ 改變當前字符的大小寫
^G Ctrl+G顯示當前文件名和狀態
U 撤銷對當前行所做的修改
u 撤銷上次操作,再次按 'u' 恢復
:f 以(%)形式顯示光標在文件中的狀態
:f filename 將文件重命名為 filename
:w filename 保存修改到 filename
:e filename 打開另一個 filename 的文件
:cd dirname 改變當前工作目錄到 dirname
:e # 在兩個打開的文件之間切換
:n 如果打開了多個文件, :n 切換到下一個
:p 如果打開了多個文件, :p 切換到上一個
:N 如果打開了多個文件, :N 切換到上一個
:r file 讀取文件並在當前行的後邊插入
:nr file 讀取文件並在第 n 行後邊插入
最後來一個演示,就是有這麼一個需求,我需要把文本中的一列進行復制並粘貼到行末尾另起一列。
比如現在我有一個文本是這樣的,我需要把每一行在host1這個位置的字符進行復制,並粘貼到行末另起一列:
首先,我們將光標移到h這個字符這裡,如下:
然後再普通模式下輸入組合鍵Ctrl + v 這時文本會變成這樣:
然後將光標向下移到到最後一行,如下:
然後將光標向右移動到4這一列,如下:
這時,我們輸入字符y進行復制,此時光標選中的區域就會消失,如下:
這時,我們輸入p字符進行粘貼,如下:
最後,我們將文本保存並退出,如下:
May you share freely, never taking more than you give.
都看到這裡,那就關注、評論、收藏、轉發一下唄!謝謝!
閱讀更多 雲中牧歌 的文章