1 . 上下左右移動
h: 左
j: 下
k:上
l: 右
n+(h/j/k/l) : 數字加上述命令表示向各個方向跳轉n行
2 . 跳轉(行間/多行/單行)
gg : 跳轉到全文首行
G : 跳轉到最後一行
nG("數字+G"): 跳轉到指定第n行;
H/M/L : 分別跳轉到當前頁面的頂端,尾端,中間 的首個非空字符
0(數字0):跳轉到行頭非空字符
$ : 跳轉到行尾非空字符
[[ : 跳轉到上一個函數的開始處
]] : 下一個函數的開始處
% : 跳轉到匹配的括號( (,),{,},[,] )的另外一半的位置
ctrl + i : 跳轉到下一個歷史移動位置
ctrl + o(字母o) : 跳轉到上一個歷史記錄位置
''''(兩個引號) : 在兩個歷史記錄之間跳轉
zt : 以當前光標爲參照,把當前光標所在行,移動到頂部(top)
zb: 以當前光標爲參照,把當前光標所在行,移動到底部(button)
zz : 以當前光標爲參照,把當前光標所在行,移動到中間
W : 下個字符串的開始
B : 上個字符串的開始
ctrl + b : 翻到上一頁
ctrl + f : 翻到下一頁
ctrl
+ d : 向下移動行
ctrl
+ u : 向上移動行
3 . 多行編輯
多行註釋:
第一步: ctrl + v : 進入塊編輯模式;
第二步: 上下移動, 選取需要編輯塊(需要先把光標移動到行首)
第三步 : 按住大寫i鍵,進入塊插入模式
第四步: 輸入註釋符號(// , # ```等)
第五步 : 按esc,退出塊編輯模式,完成(註釋符號可能會稍延時出現)
刪除多行註釋:
第一步 : ctrl + v,進入塊編輯模式
第二步 : 上下移動需要修改的塊位置
第三部 : 按x或者d建,刪除
第四步 : esc退出,完成(一次只能刪除一個符號)
命令行刪除或者添加行首:
在所有行的行首添加## :% s/^/##/g
在2到6行行首添加&&(需要轉義):2,6 s/^/\&\&/g
多行刪除:
n,m, d: (數字+數字+m) 可以刪除n到m之間的多行文本;
例如: 23, 34, d : 刪除第23行到34行之間的內容
多行縮進:
按v進入visual狀態,選擇多行,用>或<縮進或縮出
通常根據語言特徵使用自動縮進排版:在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n==排版,相當於一般IDE裏的code
format。使用gg=G可對整篇代碼進行排版。
4 . 查找:
/ + 字符串 : 向下查找
? + 字符串 : 向上查找
: noh : 取消查找到後高亮的文本的顯示
執行完此兩條命令之後,如果想要查找下一條記錄, 可以通過n鍵繼續執行正向查找, N: 反向查找(正向,反向是相對於/ 還是?的)
* : 查找當前光標所在的單詞(n: 下一個匹配項,N: 上一個匹配項)
# : 高亮顯示當前光標所在單詞 (:noh 取消高亮)
5 . 刪除
dd : 刪除當前行
x (小寫) : 刪除一個當前字符(相當於delete)
X(大寫) : 刪除一個當前字符之前的字符(相當於Backspace)
dG : 刪除當前行到尾行
:1, 10d : 刪除一到第十行的內容
6 . 複製粘貼
yy : 複製當前行
y+n+w (y+數字+w) : 複製當前單詞之後的n個單詞
y+n+W : 複製當前位置之後的n個字
y + (h/j/k/l) : 表示從當前位置複製附近的一個位置(j/k:兩行 / h/l : 一個字符)
y + n + (h/j/k/l) : 從當前位置複製多少行/字符
y+ G : 從當前複製至文檔尾行
y + 1 + G : 從當前位置複製到文檔首行
y + 0(數字0) : 從當前位置複製到當前行的行頭
y + $ : 從當前位置複製到當前行行尾
p(小寫) : 粘貼到遊標之後
P(大寫) : 粘貼到遊標之前
shift + insert : 把當前粘貼板裏面的內容粘貼進去(插入模式時候使用)
7 . 替換
:s/vivian/sky/ 替換當前行第一個 vivian 爲 sky
:s/vivian/sky/g 替換當前行所有 vivian 爲 sky
:n,$ s/vivian/sky/g : 替換第 n 行開始到最後一行中每一行所有 vivian 爲 sky
特別的: (去掉window下面的^M )
使用命令:cat
filename1 | tr -d “^V^M” > newfile
使用命令:sed -e “s/^V^M//” filename > outputfilename.
在vi中處理:首先使用vi打開文件,然後按ESC鍵,接着輸入命令:%s/^V^M//.
:%s/^M$//g
需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M.你必須要手工進行輸入,而不是粘貼。
8 . 加入ctags"鏈接"
ctags -R * : 把一個目錄下的所有文件的標記符號都記錄下來,用於vim進行函數的跳轉鏈接(ctrl + ] : 可以跳轉)
9. 內容編輯回退
u : 編輯內容回到之前(一次一步)
ctrl + r : 重做(撤銷之前的回退)
10. 不退出vim,執行shell命令
:!cmd
不退出vim 執行命令 cmd
:r !cmd
不退出vim執行命令cmd,並將cmd的輸出內容插入當前文本中。
:shell
切換到shell裏(此時並沒有退出vim,可以理解成vim轉入後臺),你可以在shell中做任何操作,退出shell(比如用exit)後,會切換回原來的vim中