用了vi兩年,因為不用vi寫代碼作開發,只是簡單的修改配置文件而已,因此,呵呵,兩年了還是一點不熟悉。最近因為公司要求需要學習在linux/unix上開發c/c++,只好努力學一下vi/vim了。
找了一本書,O'Reilly的Learning The VI Editor,chm的電子版本,認真地學了一遍,總結了一下常用命令:
文件操作
vi +n file?打開文件并移動到第n行
vi +? file?打開文件并移動到最后一行
vi R file / view file ?只讀打開文件
:w??保存
:w!??覆蓋已存在的文件文件
:w newfile?保存為新文件
:wq??保存并退出
ZZ??保存并退出=:wq
:q??退出
:q!??退出不保存修改
:e!??退回到上一次保存的狀態
:1,10w newfile?將第一行到第10行保存為新文件
:.,$w >> file?將當前位置到結尾的內容添加到別的文件
:r file??讀取file文件的內容
移動
Numeric + h|j|k|l?執行n次操作
h??向左移動(一個字符)
j??向下移動一行
k??向上移動一行
l??向右移動(一個字符)?
e/E??移動到單詞的末尾
(/)??移動到當前(一下)句的開始
{/}??移動到當前(一下)段的開始
[[/]]??移動到當前(一下)部分的開始
0??移動到行首
$??移動到行末
w??向后移動一個文本塊
W??向后移動一個文本塊(忽略標點)
b??向前移動一個文本塊
B??向前移動一個文本塊(忽略標點)
^??移動到當前行的第一個非空白字符
回車/+??移動到下一行的開頭的第一個字符
-??移動到上一行的開頭的第一個字符
CTRL-F??下翻一屏
CTRL-B??上翻一屏
CTRL-D??下翻半屏
CTRL-U??下翻半屏
z + 回車?將當前行移到屏幕頂部
z.??將當前行移到屏幕中間
z-??將當前行移到屏幕底部
CTRL-L/CTRL-R?重新刷新屏幕?
H??移到屏幕的第一行
nH??移到屏幕的第n行
M??移到屏幕的中間
L??移到屏幕的最后一行
nL??移到屏幕的最后一行前的n行
CTRL-L??顯示行信息
G??移動到文件的最后一行
nG??移動到文件的第n行
``??移動到上一個位置
編輯
i??在當前位置前插入
I??在行首插入
a??在當前位置后添加
A??在行末添加
o??在當前行下方新建一個空行開始插入
O??在當前行上方新建一個空行開始插入
s??刪除當前字符然后進入插入狀態
S??刪除當前行然后進入插入狀態
cw??修改當前詞語(刪除然后進入插入狀態)
?c2b?刪除前面兩個詞語?
?c$?刪除本行當前位置后所有的內容
?c0?刪除本行當前位置前所有的內容
cc??修改當前行(刪除然后進入插入狀態)
r??替換當前字符(還保持命令狀態)
R??連續替換(進入替換狀態)
~??修改當前字符的大小寫
J??連接兩行
標記
mx??將當前位置標記為x
'x??移動到標記為x的行
`x??移動到標記為x的位置
``/''??在兩次位置間切換
刪除
dw??刪除一個單詞
d2w??刪除兩個單詞
dd??刪除當前行
d3d??刪除3行
d0??刪除當前行中在光標前的所有內容
d$/D??刪除當前行中在光標后的所有內容
db??刪除前一個單詞
x??刪除一個字符
3x??刪除3個字符
移動
p??粘貼
xp??相當于交換兩個字符的位置
yw??復制一個單詞
.??重復上一個操作
.??取消上一個操作
?
搜索
/pattern?從前往后搜
?pattern?從后往前搜
n/N??和上一詞搜索方向相同(相反)再搜
fx/Fx??在同一行中查找下(上)一個x字符并移動光標
替換
:s/old/new?替換當前行的第一個匹配
:s/old/new/g?替換當前行的全部匹配
:1,100s/old/new/g?替換1-100行的全部匹配
:1,$s/old/new/g?替換全部匹配=:%s/old/new/g
:g/pattern/s/old/new/g?查找滿足pattern條件的行并進行替換
命令組合:
Change?Delete?Copy?from Cursor to ...
cH?dH?yH?top of screen
cL?dL?yL?bottom of screen
c+?d+?y+?next line
c5|?d5|?y5|?column 5 of current line
2c)?2d)?2y)?second sentence following
c{?d{?y{?previous paragraph
c/pattern d/pattern y/pattern pattern
cn?dn?yn?next pattern
cG?dG?yG?end of file
c13G?d13G?y13G?line number 13
(這里還是看書里面的原文吧。)