2015年7月27日 星期一

Vim - Ch3 Vim 尋找替換、命令指令與視窗操作

 

這篇介紹尋找替換、命令指令與視窗操作,其中尋找中的正則表達式挪到正規語言的文章做解說,視窗操作可配合linux的screen使用。Enjoy it !



尋找與替換

尋找
  • /    在 c-mode 的情形下,按 / 就會在左下角出現一個 /,然後鍵入您要尋找的字串,按Enter 就會開始找。
  • ?    和 / 相同,只是 / 是向前(下)找,? 則是向後(上)找。
  • *    尋找游標所在處之 word(要完全符合)。
  • #    同上,但 * 是向前(下)找,# 則是向後(上)找。
  • g*  同 * ,但部份符合即可。
  • g#  同 # ,但部份符合即可。
  • n    繼續尋找。
  • N    繼續尋找(反向)。

替換

:[range]s/pattern/string/[c,e,g,i]

  • range  指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。
  • pattern  就是要被替換掉的字串,可以用 regexp 來表示。
  • string   將 pattern 由 string 所取代。
  • c   confirm,每次替換前會詢問。
  • e  不顯示 error。
  • g  globe,不詢問,整行替換。
  • i   ignore 不分大小寫。

[用心去感覺] c,e,g,i
g 大概都是要加的,否則只會替換每一行的第一個符合字串。可以合起來用,如cgi,表示不分大小寫,整行替換,替換前要詢問是否替換。

[實例] :%s/Edwin/Edward/g
這樣整篇文章的 Edwin 就會替換成 Edward。




開檔與關檔

開檔
  • vim 檔名     這樣開檔後,游標會落在檔案最後一行的行尾
  • vim n 檔名  游標會落在第 n 行的行首。
  • :e  檔名        這是在進入 vim 後,在不離開 vim的情形下再開其它檔案。只要您要編輯的檔案是在目前目錄,Tab 補全鍵還是可以使用。
  • :e#                編輯前一個檔案,用於兩檔互相編輯時相當好用。# 代表的是前一次編輯的檔案。
  • ls      會列出目前 buffer 中的所有檔案。
  • :f      顯示目前編輯的檔名、是否經過修改及目前游標所在之位置。
  • :f 檔名     改變編輯中的檔名。(file)

離開
  • :q    如本文有修改而沒存檔,會警告,且無法離開。(quit)
  • :q!   捨棄所有修改,強迫離開。
  • :wq 存檔後離開。縱使檔案未曾修改也是會再存一次檔。
  • :x    也是存檔後離開,但如果檔案沒有修改,則不會做存檔的動作。ZZ  和 :x 完全一樣,隨您高興用哪一個。
  • :w 檔名    另存他檔。不加檔名就是寫入原檔。(write)

緊急回復
vim -r 檔名,或進入 vim 後,下 :recover 檔名,來回復。

[用心去感覺] 強制符號 !
:q 及 :q! ,是對目前編輯中的檔案作用,如果多檔編輯的情形並不會離開 vim,這時可下 :qa 或 :qa! 來整個離開 vim。a 就是 all 的意思。
:指令!,這個 ! 的意思是強迫中止目前正在編輯的動作,而去執行所下的指令。各位應該到目前為止碰過好幾次了吧!




視窗操作
開新視窗會在原視窗上半方,也就是視窗一分為二。凡視窗操作的按鍵都是由 Ctrl-w 來起頭的,w 就是 window。
  • Ctrl-w n  即 :new。開一空的新視窗。
  • Ctrl-w s  即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。
  • Ctrl-w f  開一新視窗,並編輯游標所在處之 word 為檔名的檔案。
  • Ctrl-w q  即 :q 結束分割出來的視窗。
  • Ctrl-w o  即 :only! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。
  • Ctrl-w j  移至下視窗。
  • Ctrl-w k  移至上視窗。
  • :sp 檔名  開另一新視窗來編輯檔案。




書籤功能(marks)
可以在文章中的某處做個記號,呼叫 mark 時會回到原處。
  • mx  x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
  • `x  回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。
  • 'x  回到書籤設定行行首。' 是 forward quote,是 Enter 鍵隔壁那一個。
  • 數目字的用法比較特殊,'0 是回到前一次編輯檔案中離開前的最後位置,'1 則是回到前二次編輯檔案的最後位置,依此類推。您不必使用 m 來標示,vim 會自動記憶。
  • :marks  得知目前所有書籤的列表。





References

鳥哥的 Linux 私房菜 - 第九章、vim 程式編輯器
http://linux.vbird.org/linux_basic/0310vi.php#vi_vim_why

vgod/vimrc
https://github.com/vgod/vimrc

大家來學VIM(一個歷久彌新的編輯器) 作者:Edward Lee
http://www.study-area.org/tips/vim/index.html






技術提供:Blogger.