歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 程序員的編輯器Vim

程序員的編輯器Vim

日期:2017/2/28 13:58:22   编辑:Linux教程

Vim 在編輯器中是神一樣的存在,熟練掌握Vim將極大提高編輯文本的效率。本文將介紹Vim最基本的操作和技巧。

操作篇

模式

Vim中一共有4種模式:

  1. 普通模式:啟動Vim後,為普通模式,所有鍵都為功能鍵。
  2. 插入模式:按下鍵i,進入插入模式,此時可以輸入文本,返回普通模式,按Esc鍵。
  3. 可視模式:按下鍵v,進入可視模式,可以移動光標對文本進行選擇
  4. 命令行模式:輸入":"進入命令行模式,運行Vim的命令

最基本的移動

將光標上下左右移動,分別對應kjhl四個鍵。可以在前面加數字代表移動多個單位。如10j下移10行。

在文件中的移動

G-----移動到最後一行

gg ------ 移動到第一行

10G ------ 跳到第10行

75% ----- 跳轉到全文75%的地方

移動到指定字符

使用f,t,F,T可以再當前行快速移動。

fx ----- 移動到光標右邊的第一個’x'字符上

Fx ----- 反方向查找,也就是移動到光標左邊的指定字符上。

tx ----- 移動到光標右邊的第一個’x'字符之前

Tx ----- 它移動到光標右邊的指定字符'x'之後。

; ----- 重復前一次輸入的f, t, F, T命令

, ----- 反方向重復前一次輸入的f, t, F,T命令。

";"和","這兩個命令前也可以使用數字來表示倍數。也可以在命令前面使用數字,表示倍數。例如: 3fx ----- 移動到光標右邊的第3個’x'字符上。

移動到行首行尾

0 ------ 移動到行首

$ ------ 移動到行尾

^ -------移動到第一個非空白字符行首

按單詞移動

w ------ 移動光標的下一個單詞的詞首

b ------ 移動光標的上一個單詞的詞首

e ------ 移動光標的下一個單詞的詞尾

ge ------ 移動光標的上一個單詞的詞尾

按窗口移動

H ------ 讓光標跳到當前窗口的頂部 M ------ 讓光標跳到當前窗口的中部 L ------ 讓光標跳到當前窗口的底部

相對於光標滾屏

zt ------ 把光標所在行移動窗口的頂端 zz ------ 把光標所在行移動窗口的中間 zb ------ 把光標所在行移動窗口的底部

各種插入

i ------ 在光標處插入 a ------ 在光標後插入 o ------ 在當前行後插入一個新行 O ------ 在當前行前插入一個新行 cw ------ 替換從光標所在位置後到一個單詞結尾的字符(c鍵和w鍵)

復制和粘貼

yy ------ 拷貝當前行 p ------ 粘貼 也可以在yy和p的前面加上數字: 3yy ------ 拷貝當前行起的3行 3p ------ 粘貼文本3次

查找

在normal模式下進行查找。 / ------ 在Normal模式下輸入”/“,然後輸入你想查詢的字符串,回車,就跳轉到第一個匹配的地方了。 ? ------ 與/相反的方向查找 n ------ 重復上一次的查找命令 N ------ 按相反方向重復上一次的查找命令

在輸入”/“或”?“後,用上、下光標鍵(或CTRL-P/CTRL-N)翻看歷史記錄,然後再次執行這個查找。 你還可以使用”q/“和”q?“命令,在vim窗口最下面打開一個新的窗口,這個窗口會列出你的查找歷史記錄,你可以使用任何vim編輯命令對此窗口的內容進行編輯,然後再按回車,就會對光標所在的行的內容進行查找。如下圖所示:

* ------ 查找光標所在位置的單詞,所有匹配的單詞將高亮顯示,並跳到下一個匹配項上 # ------ 查找光標所在位置的單詞,所有匹配的單詞將高亮顯示,並跳到上一個匹配項上

% ------ 括號匹配移動,即移動到與當前光標所在括號匹配的括號的位置

替換字符串

%s/源字符串/目的字符串/g ------ 將當前文檔中所有的源字符串替換為目的字符串

刪除、撤銷和重做

dd ------ 刪除當前行 dt ------ 刪除當前行直到遇到它後面跟的符號 u ------ 撤銷上一次操作 ctrl + r ------ redo重做 如我用dd刪除了當前行,如果後悔了不想刪除可以使用u命令撤銷,如果還是想刪除可以使用ctrl + r繼續刪除。

打開、保存和退出

以下操作除非特別說明都在命令模式下操作,即每個命令前都要加入":",如:q退出。 q ------ 退出當前文件 q! ------ 強制退出當前文件,不保存 w ------ 寫入文件,存盤 wq ------ 保存退出當前文件 x ------ 保存退出當前文件 ZZ ------ 保存退出當前文件(普通模式下運行) e filepath ------ 打開一個文件 saveas filepath ------ 另存為 bn ------ 當同時打開很多文件後,可以使用bn切換下一個文件。 bp ------ 當同時打開很多文件後,可以使用bp切換上一個文件。

重復命令

. ------ 重復上一次離開插入模式之前的全部命令 n< command > ------ 之前提到過的重復command命令n次

光標移動和命令配合使用

0y−−−−−−復制本行(0移動到行首,y從這裡開始復制, 直到本行最後一個字符) ye ------ 復制從當前位置到下一個單詞的詞尾

技巧篇

找出當前文檔中相同的行

:sort
/^\(.\+\)$\n\1

按時間撤消

Vim 7 包括了一個讓用戶跳轉到任何編輯點之前或之後的新特性。如使用

:earlier 10m 

可以返回到 10 分鐘以前的編輯狀態。 又如使用

:later 5s 

可以跳轉到 5 秒以後的編輯點。另外,可以使用 :undolist 命令查看緩沖區存在的撤銷分支列表。而通過 :undo < number> 命令則能夠移到撤銷的某個分支。

刪除當前文檔的所有空行

:g/^$/d

在每行的行首或行尾插入指定字符串

行首插入:

:%s/^/your_word/

行尾插入:

:%s/$/your_word/

例如在每行前面插入行號如下:

:%s/^/\=line(".")/

讀取shell命令

如插入日期:

:r!date

:r 是:read的縮寫,!是表明要運行一個shell命令,意思是我要把shell命令的輸出讀到vim裡來。

統計某個單詞出現的次數

:%s/word//gn

統計的結果會在底部的狀態欄顯示。

Vim粘貼縮進問題

在Vim中粘貼Python代碼後,縮進就全亂了。進入paste模式以後,可以在插入模式下粘貼內容,不會有任何變形。

:set paste

最後使用:set nopaste恢復普通模式。


好了,這篇文章已經說了不少關於Vim的基本操作和技巧,如果能掌握這些就可以比較流暢的使用Vim了。之後會有更多關於Vim操作的文章。

Copyright © Linux教程網 All Rights Reserved