這是我總結(jié)的一些基本用法,可能對初用者會有幫助,獨樂樂不如眾樂樂,是吧!
說明:以下黑色為vi和vim均有的一般功能,而紅色為Vim(Vi Improved)所特有功能。Vim一般的Unix和Linux下均有安裝。
? 三種狀態(tài)
Command: 任何輸入都會作為編輯命令,而不會出現(xiàn)在屏幕上,任何輸入都引起立即反映
Insert: 任何輸入的數(shù)據(jù)都置于編輯寄存器,按ESC,可跳回command方式
Escape: 以“:”或者“/”為前導的指令,出現(xiàn)在屏幕的最下一行,任何輸入都被當成特別指令。
? 離開vi
:q! 離開vi,并放棄剛在緩沖區(qū)內(nèi)編輯的內(nèi)容。
:wq 將緩沖區(qū)內(nèi)的資料寫入磁盤中,并離開vi。
:x 同wq。
(注意—— :X 是文件加密,一定要與:x存盤退出相區(qū)別)
? 進入輸入模式
a (append) 由游標之后加入資料。
A 由該行之末加入資料。
i (insert) 由游標之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行於該行之下供輸入資料之用。
O 新增一行於該行之上供輸入資料之用。
? 刪除與修改
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
r 用接於此指令之后的字元取代(replace)游標所在字元。如:ra將游標所在字元以 a 取代之。
R 進入取代狀態(tài),直到《ESC》為止。
s 刪除游標所在之字元,并進入輸入模式直到《ESC》。
S 刪除游標所在之該行資料,并進入輸入模式直到《ESC》。
? 光標的移動
m<a-z> 設置書簽<a-z>
‘<a-z> 移至書簽<a-z>處
0 移至該行之首
$ 移至該行之末。
e 移動到下個字的最後一個字母
w 移動到下個字的第一個字母。
b 移動到上個字的第一個字母。
^ 移至該行的第一個字元處。
H 移至視窗的第一行。
M 移至視窗的中間那行。
L 移至視窗的最后一行。
G 移至該文件的最后一行。
+ 移至下一列的第一個字元處。
- 移至上一列的第一個字元處。
:n 移至該文件的第 n 列。
n+ 移至游標所在位置之后的第 n 列。
n- 移至游標所在位置之前的第 n 列。
<Ctrl><g> 顯示該行之行號、文件名稱、文件中最末行之行號、游標所在行號占總行號之百分比。
(Vim) 光標移動基本用法小解:
(這只要組合上邊的功能就可以明白了,不用再一一講解了吧!)
ge b w e
← ← ---→ --→
This is-a line, with special/separated/words (and some more).
←- ←-- -----------------→ ---→
GE B W E
? 視窗的移動
<Ctrl><f> 視窗往下卷一頁。
<Ctrl><b> 視窗往上卷一頁。
<Ctrl><d> 視窗往下卷半頁。
<Ctrl><u> 視窗往上卷半頁。
<Ctrl><e> 視窗往下卷一行。
<Ctrl><y> 視窗往上卷一行。
? 剪切、復制、刪除
Operator + Scope = command
? Operator
d 剪切
y 復制。
p 粘帖,與 d 和 y 配和使用。可將最后d或y的資料放置於游標所在位置之行列下。
c 修改,類似delete與insert的組和。刪除一個字組、句子等之資料,并插入新建資料。
? Scope
e 由游標所在位置至該字串的最后一個字元。
w 由游標所在位置至下一個字串的第一個字元。
b 由游標所在位置至前一個字串的第一個字元。
$ 由游標所在位置至該行的最后一個字元。
0 由游標所在位置至該行的第一個字元。
? 整行動作
dd 刪除整行。
D 以行為單位,刪除游標后之所有字元。
cc 修改整行的內(nèi)容。
yy 使游標所在該行復制到記憶體緩沖區(qū)。
? 取消前一動作(Undo)
u 恢復最后一個指令之前的結(jié)果。
U 恢復游標該行之所有改變。
(vim) u 可以多次撤消指令,一次撤消一個操作,直至本次操作開始為止。
(vim) Ctrl+r 可以恢復撤消前內(nèi)容,按多次可恢復多次。
? 查找與替換
/字串 往游標之后尋找該字串。
?字串 往游標之前尋找該字串。
n 往下繼續(xù)尋找下一個相同的字串。
N 往上繼續(xù)尋找下一個相同的字串。
% 查找“(”,“)”,“{”,“}”的配對符。
s 搜尋某行列范圍。
g 搜尋整個編輯緩沖區(qū)的資料。
:1,$s/old/new/g 將文件中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
(vim)
/字符串 后邊輸入查詢內(nèi)容可保存至緩沖區(qū)中,可用↑↓進行以往內(nèi)容選擇。
另外:將光標移動在選定單詞下方按*,則可以選中此單詞作為查詢字符,可以避免輸入一長串字符的麻煩。
? (vim) 大小寫替換
首先用按v開啟選擇功能,然后用↑↓←→鍵來選定所要替換的字符,若是小寫變大寫,則按U;反之按u;
如果是選擇單詞,則可以在按v后,按w,最后按U/u,這樣就可以將字符隨意的改變大小寫了,而不用刪除后重新敲入。
? 資料的連接
J 句子的連接。將游標所在之下一行連接至游標該行的后面。
? 環(huán)境的設定
:set all 可設置的環(huán)境變量列表
:set 環(huán)境變量的當前值
:set nu 設定資料的行號。
:set nonu 取消行號設定。
:set ai 自動內(nèi)縮。
:set noai 取消自動內(nèi)縮。
(vim)
:set ruler 會在屏幕右下角顯示當前光標所處位置,并隨光移動而改變,占用屏幕空間較小,使用也比較方便,推薦使用。
:set hlsearch 在使用查找功能時,會高亮顯示所有匹配的內(nèi)容。
:set nohlsearch 關閉此功能。
:set incsearch 使Vim在輸入字符串的過程中,光標就可定位顯示匹配點。
:set nowrapscan 關閉查找自動回環(huán)功能,即查找到文件結(jié)尾處,結(jié)束查找;默認狀態(tài)是自動回環(huán)
? ex指令
? 讀寫資料
:10,20w test 將第10行至第20行的資料寫入test文件。
:10,20w>>test 將第10行至第20行的資料加在test文件之后。
:r test 將test文件的資料讀入編輯緩沖區(qū)的最后。
:e [filename] 編輯新的文件。
:e! [filename] 放棄當前修改的文件,編輯新的文件。
:sh 進入shell環(huán)境,使用exit退出,回到編輯器中。
:!cmd 運行命令cmd后,返回到編輯器中。
? 刪除、復制及搬移
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩沖區(qū)。
:10,20co30 將第10行至第20行的資料復制至第30行之后。
:10,20mo30 將第10行至第20行的資料搬移至第30行之后。
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/jsufcz/archive/2009/02/11/3875956.aspx