Vim命令之終結篇

這一次又特意對Vim/Vi的常用命令做了一次比較全面的總結,雖然花了兩三個小時,但是覺得還是值得的。
前面總結使用Vim/Vi的命令,可能有一些雜亂,這一次就進一步的小結一下,並且將之前沒有總結到的,但是絕對
有用的命令補充完整,希望對自己有用,對大家有也一點小小的用處,謝謝^_^!!!(⊙o⊙)
在Linux下熟悉並掌握最少一個文本編輯器是比不可少的,因爲在Linux絕大部分的配置文件是以ASCII的純文本文件,
要對配置文件進行修改,符合一些要求,此時就得使用到文本編輯器了。
學Vim/Vi的一個重要原因在於在Linux中很多軟件的編輯接口都會主動調用Vi;比如:crontab、visudo等。再說
Vim/Vi 它還是一項很好的程序開發工具,是程序編輯器,能夠根據文件的擴展名或是文件內的開頭信息判斷文件的內容
而自動調用該程序的語法判斷式,再以相應的顏色來顯示程序代碼與信息,比如:C/C++程序、shell script等。所以,
掌握Vim/Vi是必須的。

Vi的三種模式:命令行模式、底層模式、編輯模式。(可能不同的參考書,叫法不一樣,但是其實質意思相同)
小常識:命令行模式可與底層模式及編輯模式之間相互切換,但是底層模式與編輯模式是不能相互切換滴。(以往木注意!)

在Vim/Vi 中使用的按鍵命令。Vi中的萬能鍵ESC!!!

1、光標移動的命令(大部分的命令在命令行模式有效,個別的會說明註釋)
a、最原始的字符方向鍵:(同時對應相應的四個箭頭方向鍵)
h 向左移動一個字符
j 向下移動一個字符
k 向上移動一個字符
l 向右移動一個字符(是小寫的字符l)
如果想在同一行移動多個字符或是想移動多行,可以使用組合鍵:n+對應的方向鍵<如上>即可,其中n爲數字。
並且要注意,字符方向鍵只能在命令行模式下有效,而箭頭方向鍵在命令行模式和編輯模式都有效。

b、有時一行一行的移動有些麻煩,下面的幾個命令可以解決這個麻煩:
ctrl+f 屏幕向下移動一頁(常用,類似pagedown鍵)
ctrl+b 屏幕向上移動一頁(常用,類似pageup鍵)
ctrl+d 屏幕向下移動半頁
ctrl+u 屏幕向上移動半頁
這幾個命令式在命令行模式下有效。下面幾個也一樣:
H 光標移動到當前屏幕最上方那一行的第一個字符
M 光標移動到當前屏幕中間那一行的第一個字符
L 光標移動到當前屏幕最下方那一行的第一個字符

c、有時也想定位稍微準確一點(都是比較常用的)
0 移動光標到該行的行首(常用,是數字0,類似home鍵)
$ 移動光標到改行的行尾(類似end鍵)
n<space> (n爲數字)在光標所在位置使光標在該行向後移動n個字符
gg 移動光標到該文件的第一行
G 移動光標到該文件的最後一行(常用)
nG n爲數字,使光標移動到該文件的第n行
n[Enter] n爲數字,使光標向下移動n行(常用)
:n n爲數字,使光標移動到該文件的第n行(底層模式有效)
 
2、查找與替換(在底層模式有效)
a、全文件查找
/word 向下尋找匹配word的字符串
?word 向上尋找匹配word的字符串
n 英文字符,若是/word,即是向下繼續尋找;若是?word,即是向上繼續尋找
N 英文字符,若是/word,即是向上繼續尋找;若是?word,即是向下繼續尋找

b、在某一範圍內查找,並且將找到的字符串予以替換
:n1,n2s/word1/word2/gn1,n2爲數字,在第n1到n2行之間尋找word1,並替換爲word2
:1,$s/word1/word2/g在第一行到最後行之間尋找word1,並替換爲word2
:1,$s/word1/word2/gc在第一行到最後行之間尋找word1,並替換爲word2,在替換前要確認

3、刪除、複製與粘貼(在命令行模式有效,常用)
a、刪除
x,X 在光標所在行,x向後刪除一個字符,X向前刪除一個字符
nx n爲數字,在光標所在行向後刪除n個字符
dd 刪除光標所在行
ndd n爲數字,刪除包括光標所在行在內的向下n行
d1G 刪除光標所在行到第一行的所有數據
dG 刪除光標所在到最後一行的所有數據
d0 刪除光標所在位置字符到該行行首的所有字符
d$ 刪除光標所在位置字符到改行行尾的所有字符

b、複製
yy 複製光標所在的那一行
nyy n爲數字,複製包括光標在內的向下n行
y1G 複製光標所在行到第一行的所有數據
yG 複製光標所在到最後一行的所有數據
y0 複製光標所在位置字符到該行行首的所有字符
y$ 複製光標所在位置字符到該行行尾的所有字符

c、粘貼
p 小寫,粘貼到光標所在行的下一行
P 大寫,粘貼到光標所在行的上一行

4、Undo/Redo(常用)
u 復原前一個動作
ctrl+r 重做上一個操作
. 小數點,重複前一個操作
 
5、從命令行模式進入編輯模式,即插入模式
i 在光標所在的位置插入
I 在光標所在行的第一個非空格處開始插入(即是在該行的第一個字符處開始插入)
a 在光標所在位置的下一個字符處開始插入
A 在光標所在行的最後一個字符處開始插入
o 在光標所在行的下一行處插入新的一行
O 在光標所在行的上一行處插入新的一行(大寫的O)
s 刪除光標所在的那個字符,並開始插入
S 刪除光標所在字符及其後的所有字符,並開始插入(大寫的S)
r 可替換光標所在的那個字符一次
R 會一直替換光標後面的字符,直到ESC
 
6、從命令行模式到底層模式
:w 將編輯的數據寫入磁盤文件,並不退出Vi (:w!)
q 離開Vi,不保存數據
q! 強制退出Vi
wq 保存並退出Vi(:wq!)
ZZ 若文件數據改動,保存後離開Vi;若未改動,也離開Vi
w [filename] 將編輯的數據另存爲一個文件
r [filename] 將另一文件的數據讀入到正在編輯的文件中,讀入的位置爲光標所在行的後面
:n1,n2 w [filename]將第n1行到第n2行的內容保存到另一文件中
:! command 在Vim的底層模式下執行該命令,會暫時離開vi,到終端執行command的顯示結果
 
7、Vi中的塊選擇
上面講到的很多命令都是以行爲單位進行操作的,但是若想進行大範圍的操作,就涉及到下面的以塊選擇爲
單位的操作。以往總是想複製某一行的某一部分字符串,總是束手無策,不過下面的命令滿足了我小小的慾望。
v 字符選擇,會將光標移動經過的地方反白選擇
V 行選擇,會將光標移動經過的地方反白選擇
Ctrl+v 塊選擇,以方形的形式選擇數據

y 將反白的地方複製
p 將複製的內容粘貼在所需要的地方
d 將反白的地方刪除
 
8、多文件編輯
開始用Vi的時候,只能打開一個文件,關閉,然後去打開另一文件,這時想在幾個文件之間切換,會重複打開-關閉-打開
這樣的操作,非常的麻煩,不過後來學習到多文件編輯的功能,問題就迎刃而解了。
vim/vi filename1,filename2... 這樣就可以同時打開多個文件,然後使用下面的命令,就可以在這幾個文件之間
相互的切換,進行相關的複製、粘貼等相關操作。
:n 編輯下一個文件
:N 編輯上一個文件
:files 列出目前這個Vim打開的所有文件

9、多窗口功能(即是分割窗口)
如果想在一個已經啓動的窗口中啓動另一個文件,就在底層模式下輸入 :sp filename ;若沒有加入文件名,則會出現
同一個文件在兩個窗口中,這要避免。那麼,下面的命令,可以使我們能夠在打開的幾個窗口中相互的切換。
:sp filename 在新窗口中打開新文件
ctrl+w+j/↓ 先按下ctrl+w,放開按鍵,然後再按下j或向下方向鍵,就能夠將光標切換到下面的窗口
ctrl+w+k/↑ 先按下ctrl+w,放開按鍵,然後再按下k或向上方向鍵,就能夠將光標切換到上面的窗口
ctrl+w+q 結束離開該窗口
 
10、Vim環境的設置與記錄
Vim的主動記錄我們曾經做過的操作行爲,有利於下一次的操作。這個記錄文件是:~/.viminfo ,我們可以查看。不過
重要的不是這個,重要的是Vim環境的設置,因爲喜歡Vim的朋友,都會將Vim打造成符合自己的口味,這樣操作起來就非常的
爽快。$_$
在底層模式下輸入:set all 能夠看到所有的環境設置參數,但是有點多哦!下面是一些簡單常用的。
:set nu/nonu 是否設置行號
:set hlsearch/nohlserach是否高亮度查找,即是反白的設置
:set autoindent/noautoindent是否自動縮進
:set backup/nobackup是否自動保存備份文件,一般nobackup
:set ruler 右下角的狀態欄說明
:set showmode 左下角的狀態
:set backspace設置是否用退格鍵刪除
:set bg=dark/light設置
:syntax on/off是否依據程序語法顯示不同顏色

整體的Vim的設置值一般是放置在/etc/vimrc 這個文件中,不過,我們最好不要修改這個文件;但是可以創建和修改 
~/.vimrc 這個文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章