Vim進階

轉載自:https://linux.cn/article-9366-1.html

Vim 是每個 Linux 發(fā)行版]中不可或缺的一部分刨沦,也是 Linux 用戶最常用的工具(當然是基于終端的)。至少疗涉,這個說法對我來說是成立的。人們可能會在利用什么工具進行程序設計更好方面產(chǎn)生爭議眨补,的確 Vim 可能不是一個好的選擇院刁,因為有很多不同的 IDE 或其它類似于 Sublime Text 3,Atom 等使程序設計變得更加容易的成熟的文本編輯器碟婆。

我的感想

但我認為,Vim 應該從一開始就以我們想要的方式運作惕稻,而其它編輯器讓我們按照已經(jīng)設計好的方式工作竖共,實際上不是我們想要的工作方式。我不會過多地談論其它編輯器俺祠,因為我沒有過多地使用過它們(我對 Vim 情有獨鐘)公给。

不管怎樣借帘,讓我們用 Vim 來做一些事情吧,它完全可以勝任淌铐。

利用 Vim 進行程序設計

執(zhí)行代碼

考慮一個場景肺然,當我們使用 Vim 設計 C++ 代碼并需要編譯和運行它時,該怎么做呢腿准。

(a). 我們通過 Ctrl + Z 返回到終端际起,或者利用 :wq 保存并退出。

(b). 但是任務還沒有結束释涛,接下來需要在終端上輸入類似于 g++ fileName.cxx 的命令進行編譯加叁。

(c). 接下來需要鍵入 ./a.out 執(zhí)行它。

為了讓我們的 C++ 代碼在 shell 中運行唇撬,需要做很多事情。但這似乎并不是利用 Vim 操作的方法( Vim 總是傾向于把幾乎所有操作方法利用一兩個按鍵實現(xiàn))展融。那么窖认,做這些事情的 Vim 的方式究竟是什么?

Vim 方式

Vim 不僅僅是一個文本編輯器,它是一種編輯文本的編程語言告希。這種幫助我們擴展 Vim 功能的編程語言是 “VimScript”(LCTT 譯注: Vim 腳本)扑浸。

因此,在 VimScript 的幫助下燕偶,我們可以只需一個按鍵輕松地將編譯和運行代碼的任務自動化。

create functions in vim .vimrc

create functions in vim .vimrc

以上是在我的 .vimrc 配置文件里創(chuàng)建的一個名為 CPP() 函數(shù)的片段指么。

利用 VimScript 創(chuàng)建函數(shù)

在 VimScript 中創(chuàng)建函數(shù)的語法非常簡單酝惧。它以關鍵字 func 開頭,然后是函數(shù)名(在 VimScript 中函數(shù)名必須以大寫字母開頭伯诬,否則 Vim 將提示錯誤)晚唇。在函數(shù)的結尾用關鍵詞 endfunc

在函數(shù)的主體中盗似,可以看到 exec 語句哩陕,無論您在 exec 關鍵字之后寫什么,都會在 Vim 的命令模式上執(zhí)行(記住赫舒,就是在 Vim 窗口的底部以 : 開始的命令)『芳埃現(xiàn)在接癌,傳遞給 exec 的字符串是(LCTT 譯注::!clear && g++ % && ./a.out) -

vim functions commands & symbols

vim functions commands & symbols

當這個函數(shù)被調用時,它首先清除終端屏幕扔涧,因此只能看到輸出届谈,接著執(zhí)行 g++ 處理你工作的文件,然后運行由前一步編譯而形成的 a.out 文件艰山。

將 ctrl+r 映射為運行 C++ 代碼

我將語句 call CPP() 映射到鍵組合 Ctrl+r,以便我現(xiàn)在可以按 Ctrl+r 來執(zhí)行我的 C++ 代碼曙搬,無需手動輸入 :call CPP(),然后按 Enter 鍵鸽嫂。

最終結果

我們終于找到了 Vim 方式的操作方法。現(xiàn)在据某,你只需按一個(組合)鍵橡娄,你編寫的 C++ 代碼就輸出在你的屏幕上,你不需要鍵入所有冗長的命令了癣籽。這也節(jié)省了你的時間挽唉。

我們也可以為其他語言實現(xiàn)這類功能。

create function in vim for python

create function in vim for python

對于Python:您可以按下 Ctrl+e 解釋執(zhí)行您的代碼筷狼。

create function in vim for java

create function in vim for java

對于Java:您現(xiàn)在可以按下 Ctrl+j瓶籽,它將首先編譯您的 Java 代碼,然后執(zhí)行您的 Java 類文件并顯示輸出埂材。

進一步提高

所以塑顺,這就是如何在 Vim 中操作的方法。現(xiàn)在俏险,我們來看看如何在 Vim 中實現(xiàn)所有這些严拒。我們可以直接在 Vim 中使用這些代碼片段,而另一種方法是使用 Vim 中的自動命令 autocmd寡喝。autocmd 的優(yōu)點是這些命令無需用戶調用糙俗,它們在用戶所提供的任何特定條件下自動執(zhí)行。

我想用 autocmd 實現(xiàn)這個预鬓,而不是對每種語言使用不同的映射巧骚,執(zhí)行不同程序設計語言編譯出的代碼。

autocmd in vimrc

autocmd in vimrc

在這里做的是格二,為所有的定義了執(zhí)行相應文件類型代碼的函數(shù)編寫了自動命令劈彪。

會發(fā)生什么?當我打開任何上述提到的文件類型的緩沖區(qū)顶猜, Vim 會自動將 Ctrl + r 映射到函數(shù)調用沧奴,而 <CR> 表示回車鍵,這樣就不需要每完成一個獨立的任務就按一次回車鍵了长窄。

為了實現(xiàn)這個功能滔吠,您只需將函數(shù)片段添加到 .vimrc 文件中纲菌,然后將所有這些 autocmd 也一并添加進去。這樣疮绷,當您下一次打開 Vim 時翰舌,Vim 將擁有所有相應的功能來執(zhí)行所有具有相同綁定鍵的代碼。

總結

就這些了冬骚。希望這些能讓你更愛 Vim 椅贱。我目前正在探究 Vim 中的一些內容,正閱讀文檔只冻,補充 .vimrc 文件庇麦,當我研究出一些成果后我會再次與你分享。

如果你想看一下我現(xiàn)在的 .vimrc 文件喜德,這是我的 Github 賬戶的鏈接: MyVimrc山橄。

期待你的好評。


via: http://www.linuxandubuntu.com/home/making-vim-even-more-awesome-with-these-cool-features

作者:LINUXANDUBUNTU 譯者:stevenzdg988 校對:wxy

本文由 LCTT 原創(chuàng)編譯舍悯,Linux中國 榮譽推出

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末驾胆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贱呐,更是在濱河造成了極大的恐慌,老刑警劉巖入桂,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異馁蒂,居然都是意外死亡蜘腌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門沮脖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勺届,“玉大人,你說我怎么就攤上這事免姿¢啪疲” “怎么了故俐?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵药版,是天一觀的道長刚陡。 經(jīng)常有香客問我株汉,道長,這世上最難降的妖魔是什么蝙云? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任勃刨,我火速辦了婚禮,結果婚禮上身隐,老公的妹妹穿的比我還像新娘唯灵。我一直安慰自己,他們只是感情好垢揩,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布叁巨。 她就那樣靜靜地躺著呐籽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宙刘。 梳的紋絲不亂的頭發(fā)上牢酵,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音布近,去河邊找鬼。 笑死撑瞧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的订咸。 我是一名探鬼主播酬诀,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒御,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肴裙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤甜癞,失蹤者是張志新(化名)和其女友劉穎带欢,沒想到半個月后烤惊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柒室,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡逗宜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年纺讲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逢渔。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肃廓,死狀恐怖智厌,靈堂內的尸體忽然破棺而出铣鹏,到底是詐尸還是另有隱情哀蘑,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布合溺,位于F島的核電站脊髓,受9級特大地震影響,放射性物質發(fā)生泄漏将硝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一痰腮、第九天 我趴在偏房一處隱蔽的房頂上張望膀值。 院中可真熱鬧,春花似錦沧踏、人聲如沸巾钉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赚导。三九已至,卻和暖如春吼旧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寡夹。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工菩掏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人智绸。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓瞧栗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迹恐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353