都說vim跟emacs是編輯器之神,一直很想學習,所以這幾天就看起了它的中文幫助文檔。
同樣想學習的朋友可以到它官網下載:VIM中文幫助文檔
下載好後安裝,怎麼安裝它裏面有說明。然後就可以在vim裏面輸入":help user-manual@cn"查看它的中文用戶手冊,慢慢開始學習吧~
下面是我最近學習的筆記,貼在這裏,自己忘了也方便查看:
建立自己的配置文件:
!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
建立完以後檢查下是否以非vi兼容模式啓動,在vim中輸入:
:set compatible?
如果顯示:nocompatible則表示成功了。
可以輸入:":scriptnames"查看到VIM所有配置文件的位置。
要編輯你的配置文件可以輸入:":edit $MYVIMRC"
具體怎麼配置還是看用戶手冊吧。
一些基本的設置類命令(括號內爲縮寫):
查找時的一些命令:
:set ignorecase(ic)忽略大小寫
:set noignorecase(noic)關閉忽略大小寫
:set hlsearch(hls)設置高亮匹配
:set nohlsearch(nohls)關閉高亮匹配(臨時關閉,下次查找又自動開啓高亮匹配了)
:set incsearch(is)輸入字符串的過程就顯示匹配點
:set nowrapscan(nows)關閉查找到結尾後回到文件開頭繼續查找
:set wrapscan(ws)開啓查找到結尾後回到文件開頭繼續查找(系統默認開啓)
:set number(nu)設置行號
:set nonumber(nonu)關閉設置行號
:set ruler(ru)右下角設置顯示光標位置
:set noruler(noru)關閉右下角設置顯示光標位置
:set autoindent(ai)自動縮進
:syntax on/off開啓/關閉語法高亮
一些對文件的操作命令:
:e xxx.cpp編輯xxx.cpp文件(沒有這個文件就會新建一個)
:w寫入
:3,6 w filename 3-6行保存爲filename
:r tmp.cpp讀入tmp.cpp文件
:q退出窗口
可以對上面的命令加“!”,進行強制操作。比如:"q!"強制退出。
對光標的操作:
h,j,k,l方向鍵
$光標移動到行尾
0光標移動到行首
^光標移動到該行第一個字符
%光標移動到匹配(可用'matchpairs'選項定義)
w移動到下一個單詞詞首
b移動到前一個單詞詞首
e移動到下一個單詞詞尾
ge移動到前一個單詞詞尾
fx移動到下一個x處
Fx移動到前一個x處
33G移動到33行(你使用G跳轉,這個位置會成爲一個標記,要回到原地,按兩下``或'',如果再按兩下,就又回去了。查找也算一次跳轉,也會標記位置,可以用Ctrl+O,Ctrl+I跳轉。)
G移動到文件末
gg移動到文件首
30%移動到文件30%處
H、M、L移動到屏幕的頂、中、底部
Ctrl+U向上滾動半屏
Ctrl+D向下滾動半屏
Ctrl+E向上滾動一行
Ctrl+Y向下滾動一行
Ctrl+F向前滾動一屏
Ctrl+B向後滾動一屏
Ctrl+O跳到較老的地方
Ctrl+I跳到較新的地方
zz光標所在行處於屏幕中間
zt光標所在行處於屏幕頂部
zb光標所在行處於屏幕底部
ma用a標記當前光標位置(可以使用a到z,26個標記)
`a移到標記a的位置
'a移到標記a的行首
:marks查看所有的標記列表,你會看到一些特殊的標記:
'跳轉前的光標位置
"最後編輯的光標位置
[最後修改的開始位置
]最後修改的結束位置
一些操作類命令:
a光標後面插入
A行尾插入
i光標前面插入
I行首插入
o下面新行插入
O上面新行插入
r替換一個字符
R替換多個字符
x刪除光標處的一個字符
X刪除光標前的一個字符
dw刪除一個單詞(包括後面的空格)
de刪除一個單詞(不包括後面的空格)
dd刪除整行
s刪除光標處的字符,並進入輸入模式
S相當於下面的cc
cc修改整行
J連接兩行(刪除光標所在行的換行符)
p插入在光標後
P插入在光標前
y拷貝
yy拷貝整行
Y拷貝整行(D是d$注意區別)
~改變大小寫
其實,有些命令是一樣含義的,如:
x 表示 dl
X 表示 dh
D 表示 d$
C 表示 c$
s 表示 cl
S 表示 cc
一些重複的命令:
;重複命令(如:fx後再按';'則會自動查找下一個x)
,反向重複
.重複一個修改(重複任何除'u','Ctrl+R'和冒號命令外的修改)
舉例:To <b>generate</b> a table of contents.
要刪除<b></b>標籤, "f<","df>",";","."
舉例:把"four"修改成"five"。
"/four","cwfive","n","."……
查找替換:
/abc 搜索 下一個n 上一個Shift+N
?abc 逆向搜索
:s/thee/the 替換光標所在行第一個匹配串
:s/thee/the/g 替換光標所在行所有匹配串
:3,6s/old/new/g 替換3-6行所有匹配串
:%s/old/new/g 全文替換匹配串
:%s/old/new/gc 替換時詢問
查找時字符:.*[]^%//?~$擁有特殊含義,查找它們時要加'/',就是轉義字符咯。
如果再使用以前查找過的單詞,可以輸入"/o<UP>",vim自動顯示old
*取得光標上的單詞並作爲被查找的字符串
3*查找光標下單詞第三次出現的地方
#反向完成相同的功能
如有:soothe、the、there幾個單詞
//<the/>查找the
/the/>查找the,soothe
//<the查找the,there
窗口和標籤的一些操作:
:split分割窗口
:split tmp.cpp用tmp.cpp分割窗口
:new開新窗口
:{height}Ctrl-W +/-調整窗口大小
:vsplit垂直分割
:vnew
:Ctrl-WW窗口間切換
:Ctrl-Wh/j/k/l/t/b
:Ctrl-W K/J/H/L大寫,調換窗口
:qall/:wall/:wqall/:qall!對所有窗口操作
:tabedit tmp.cpp建立新標籤頁編輯文件
:tab split
:tabnew
:gt切換標籤頁
記錄與回放命令:
這個是直接從用戶手冊裏面拷貝的,感覺這個太有用了:
"." 命令重複前一個修改操作。但如果你需要作一些更復雜的操作它就不行了。這時,記
錄命令就變得很有效。這需要三個步驟:
1. "q{register}" 命令啓動一次擊鍵記錄,結果保存到 {register} 指定的寄存器中。
寄存器名可以用 a 到 z 中任一個字母表示。
2. 輸入你的命令。
3. 鍵入 q (後面不用跟任何字符) 命令結束記錄。
現在,你可以用 "@{register}" 命令執行這個宏。
現在看看你可以怎麼用這些命令。假設你有如下文件名列表:
stdio.h ~
fcntl.h ~
unistd.h ~
stdlib.h ~
而你想把它變成這樣:
#include "stdio.h" ~
#include "fcntl.h" ~
#include "unistd.h" ~
#include "stdlib.h" ~
先移動到第一行,接着執行如下命令:
qa 啓動記錄,並使用寄存器 a
^ 移到行首
i#include "<Esc> 在行首輸入 #include "
$ 移到行末
a"<Esc> 在行末加上雙引號 (")
j 移到下一行
q 結束記錄
現在,你已經完成一次複雜的修改了。你可以通過重複三次 "@a" 完成餘下的修改。
"@a" 命令可以通過計數前綴修飾,使操作重複指定的次數。在本例中,你可以輸入:
>
3@a
簡單的鍵盤映射:
如:把"amout"變成"{amout}"設置成F5鍵,最好定義成'/'加一個字母,以免與vim自身命令衝突。
:map <F5> i{<Esc>ea}<Esc>
另外學到的一些命令:
Ctrl+g 顯示文檔信息
Shift+G 434Shift+G 跳轉
:jumps輸出你可以跳往的位置的列表。最後一個你使用的標記會用">"符號標記出來。
v啓動可視模式
Ctrl+v可以選擇列的可視模式
可視模式下切換光標o、O
繼續學習中……