好用到哭!8個技巧讓Vim菜鳥變專家
Vim只不過是一個文本編輯器,但如果你曾見過真正的高手是如何使用vim的,你就會知道,這個軟件出人意料地強(qiáng)大、高效、迅捷。對于高水平使用者而言,vim能夠幫助其更清晰、明確地表達(dá)操作指令。一旦熟練掌握vim語言,使用者就能更加快速地和自己的電腦交流。
必備條件
在開始閱讀本文之前,你應(yīng)該至少知道vim有哪些簡單的指令,例如基本動作、導(dǎo)入操作和查找信息。如果你還不了解這些知識,你可以打開軟件終端并運(yùn)行:
- sudo apt-get install vim
接著,你就可以運(yùn)行以下指令來自學(xué)vim:
- vimtutor
1. 宏指令
不得不重復(fù)進(jìn)行的某些文本編輯任務(wù)會讓人覺得很煩躁,做那些需要操作者重復(fù)幾十次的任務(wù)就更糟糕了。宏指令能夠有效地解除這些麻煩。你只需要敲擊一個記錄鍵,輸入需要改變的指令,然后在指令結(jié)束時停止記錄就可以了。之后,你就可以重復(fù)使用在這個記錄里的動作了,而這只需你按下一個鍵。
- 按下‘q’鍵讓vim開始記錄,然后按任意鍵,來告訴vim你想把保存的記錄下次通過這個鍵來調(diào)出。本次案例中,這個鍵設(shè)置為‘a’,所以完整的指令就是‘qa’。
- 執(zhí)行你的命令。
- 按下‘q’來結(jié)束記錄。
- 需要重復(fù)保存的系列動作時,輸入‘@a’即可。
2. 相對行號
沒人喜歡心算。即使你能心算得很快,算出23=23總要快于141-118=23。相對行號和絕對行號不同,它顯示的是你光標(biāo)所在行的相對數(shù)字。這個功能不僅便利了刪除行的操作,也使跳到指定位置的過程變得更為簡潔。你可以在.vimrc中加入以下指令來得到這個結(jié)果:
- set relativenumber
舉例來講,你可以通過輸入下列vim指令來刪除其后的25行:
- 25dd
3. 寄存器(Registers)
寄存器是在復(fù)制文本后,臨時儲存要粘貼內(nèi)容的空間。每臺電腦都有很多寄存器。Vim會自動地使用一個寄存器來儲存它的文本,這些文本和電腦里其他臨時儲存的復(fù)制文本不一樣。向你的.vimrc中加入以下指令:
- set clipboard=unnamed
- set clipboard=unnamedplus
加入這項指令后,在vim中復(fù)制粘貼文本就從“CTRL+V”, 和“CTRL+C”這一過程變?yōu)楹唵蔚剌斎?lsquo;p’。
如果你想在不重寫你的寄存器的情況下刪除文本,你可以在指令前加上“_符號:“_dd 來刪除一行。
4. 重映射Escape操作
Escape鍵和主鍵(home row)離得很遠(yuǎn)。因此,它并不是一個離開當(dāng)前指令很好的選擇。你可以在你的.vimrc中加入:
- cnoremap kj <C-C>
- cnoremap jk <C-C>
這樣,你就可以通過鍵入’jk’或者‘kj’來離開一個指令,同時,你的手一直呆在主鍵區(qū)。
5. 動詞+修飾詞+賓語
Vim有一套自己特殊的語法,這套語法遵循‘動詞+修飾詞+賓語’結(jié)構(gòu)。
動詞舉例:
- ‘d’刪除(delete)
- ‘c’改變(change)
修飾詞舉例:
- ‘t’直到(till)
- ‘f’找到(find)
- ‘i’里(inside)
賓語舉例:
- ‘w’詞(word)
- ‘(’插入語(parenthesis)
- ‘t’標(biāo)簽(tag)
- ‘s’句子(sentence)
- ‘“’引用
舉個例子,‘diw’就是刪除光標(biāo)所在的詞,無論光標(biāo)是在詞首還是詞尾。‘dt)’刪除光標(biāo)所在位置和下括號之間的文本。‘cfp’能刪除光標(biāo)所在位置到該段落結(jié)束前的所有文本,之后自動載入插入模式。和‘.’(重復(fù)前序指令)一起使用,這套語法就非常強(qiáng)大。
6. 處理空白格(White space fixing)
軟件工程中最讓人受不了的情況,就是遇到tabs而不是空和空白格(white space)在一行的結(jié)尾。為了解決這個問題,你可以向.vimrc加入:
set list
這個指令會在每行結(jié)尾顯示一個$符號,并且用^I代替tabs。你從而能更容易地識別出tabs和行尾。除此之外,下面的例子中,使用了空代替所有的tabs,這也讓空白格更加便于處理:
https://vim.fandom.com/wiki/Example_vimrc.
7. 快速查找(navigate)
你習(xí)得的有關(guān)vim的第一個操作,就是如何使用hjkl鍵來查找信息。但是,這其實是很慢的查找方式。這里列出了能幫助你快速查找的指令:
- 敲擊‘gg’來移動到文檔的頂部,‘G’來移動到最底部。
- 敲擊CTRL+F來快速向前移動,CTRL+B來快速向后移動。
- 敲擊‘zz’來重新定位頁的中心,這也你的光標(biāo)就成為新的中心。
- 遇到上括號像‘{’或者‘(’,你可以敲擊‘%’來移動到它們所匹配的下括號。
- ‘/’可以開始查找你想要的詞。
8. 日期(date)
在許多場景下,你需要給文件加上日期。這一操作緩慢且乏味。這時,你可以向你的.vimrc中加入:
- nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
- imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
從而可以只通過鍵入F3來給文檔加日期和時間。