歡迎光臨
每天分享高質量文章

用一些超酷的功能使 Vim 變得更強大 | Linux 中國

我認為,Vim 應該從一開始就以我們想要的方式運作,而其它編輯器讓我們按照已經設計好的方式工作,實際上不是我們想要的工作方式。
— Linuxandubuntu


本文導航
編譯自 | http://www.linuxandubuntu.com/home/making-vim-even-more-awesome-with-these-cool-features 
 作者 | Linuxandubuntu
 譯者 | datastruct

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

我的感想

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

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

利用 Vim 進行程式設計

執行代碼

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

(a). 我們通過 Ctrl + Z 傳回到終端,或者利用 :wq 儲存並退出。

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

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

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

Vim 方式

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

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

create functions in vim .vimrc

以上是在我的 .vimrc 配置檔案里創建的一個名為 CPP() 函式的片段。

利用 VimScript 創建函式

在 VimScript 中創建函式的語法非常簡單。它以關鍵字 func 開頭,然後是函式名(在 VimScript 中函式名必須以大寫字母開頭,否則 Vim 將提示錯誤)。在函式的結尾用關鍵詞 endfunc

在函式的主體中,可以看到 exec 陳述句,無論您在 exec 關鍵字之後寫什麼,都會在 Vim 的命令樣式上執行(記住,就是在 Vim 視窗的底部以 : 開始的命令)。現在,傳遞給 exec 的字串是(LCTT 譯註::!clear && g++ % && ./a.out) –

vim functions commands & symbols

當這個函式被呼叫時,它首先清除終端屏幕,因此只能看到輸出,接著執行 g++ 處理你工作的檔案,然後運行由前一步編譯而形成的 a.out 檔案。

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

我將陳述句 call CPP() 映射到鍵組合 Ctrl+r,以便我現在可以按 Ctrl+r 來執行我的 C++ 代碼,無需手動輸入 :call CPP(),然後按 Enter 鍵。

最終結果

我們終於找到了 Vim 方式的操作方法。現在,你只需按一個(組合)鍵,你編寫的 C++ 代碼就輸出在你的屏幕上,你不需要鍵入所有冗長的命令了。這也節省了你的時間。

我們也可以為其他語言實現這類功能。

create function in vim for python

對於Python:您可以按下 Ctrl+e 解釋執行您的代碼。

create function in vim for java

對於Java:您現在可以按下 Ctrl+j,它將首先編譯您的 Java 代碼,然後執行您的 Java 類檔案並顯示輸出。

進一步提高

所以,這就是如何在 Vim 中操作的方法。現在,我們來看看如何在 Vim 中實現所有這些。我們可以直接在 Vim 中使用這些代碼片段,而另一種方法是使用 Vim 中的自動命令 autocmdautocmd 的優點是這些命令無需用戶呼叫,它們在用戶所提供的任何特定條件下自動執行。

我想用 autocmd 實現這個,而不是對每種語言使用不同的映射,執行不同程式設計語言編譯出的代碼。

autocmd in vimrc

在這裡做的是,為所有的定義了執行相應檔案型別代碼的函式編寫了自動命令。

會發生什麼?當我打開任何上述提到的檔案型別的緩衝區, Vim 會自動將 Ctrl + r 映射到函式呼叫,而  表示回車鍵,這樣就不需要每完成一個獨立的任務就按一次回車鍵了。

為了實現這個功能,您只需將函式片段添加到 .vimrc 檔案中,然後將所有這些 autocmd也一併添加進去。這樣,當您下一次打開 Vim 時,Vim 將擁有所有相應的功能來執行所有具有相同系結鍵的代碼。

總結

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

如果你想看一下我現在的 .vimrc 檔案,這是我的 Github 賬戶的鏈接: MyVimrc[1]

期待你的好評。


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

作者:LINUXANDUBUNTU[3] 譯者:stevenzdg988 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

LCTT 譯者

datastruct(stevenzdg988) ? ? ?
共計翻譯:10 篇
貢獻時間:211 天


推薦文章

< 左右滑動查看相關文章 >

點擊圖片、輸入文章 ID 或識別二維碼直達

赞(0)

分享創造快樂