溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

發(fā)布時(shí)間:2021-10-25 11:47:20 來源:億速云 閱讀:176 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“l(fā)inux中怎么用一些超酷的功能使Vim變得更強(qiáng)大”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中怎么用一些超酷的功能使Vim變得更強(qiáng)大”這篇文章吧。

Vim 是每個(gè) Linux 發(fā)行版]中不可或缺的一部分,也是 Linux  用戶最常用的工具(當(dāng)然是基于終端的)。至少,這個(gè)說法對(duì)我來說是成立的。人們可能會(huì)在利用什么工具進(jìn)行程序設(shè)計(jì)更好方面產(chǎn)生爭(zhēng)議,的確 Vim  可能不是一個(gè)好的選擇,因?yàn)橛泻芏嗖煌?IDE 或其它類似于 Sublime Text 3,Atom  等使程序設(shè)計(jì)變得更加容易的成熟的文本編輯器。

我的感想

但我認(rèn)為,Vim 應(yīng)該從一開始就以我們想要的方式運(yùn)作,而其它編輯器讓我們按照已經(jīng)設(shè)計(jì)好的方式工作,實(shí)際上不是我們想要的工作方式。我不會(huì)過多地談?wù)撈渌庉嬈?,因?yàn)槲覜]有過多地使用過它們(我對(duì) Vim 情有獨(dú)鐘)。

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

利用 Vim 進(jìn)行程序設(shè)計(jì)

執(zhí)行代碼

考慮一個(gè)場(chǎng)景,當(dāng)我們使用 Vim 設(shè)計(jì) C++ 代碼并需要編譯和運(yùn)行它時(shí),該怎么做呢。

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

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

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

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

Vim 方式

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

因此,在 VimScript 的幫助下,我們可以只需一個(gè)按鍵輕松地將編譯和運(yùn)行代碼的任務(wù)自動(dòng)化。

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

create functions in vim .vimrc

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

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

在 VimScript 中創(chuàng)建函數(shù)的語法非常簡(jiǎn)單。它以關(guān)鍵字 func 開頭,然后是函數(shù)名(在 VimScript 中函數(shù)名必須以大寫字母開頭,否則 Vim 將提示錯(cuò)誤)。在函數(shù)的結(jié)尾用關(guān)鍵詞 endfunc

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

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

vim functions commands & symbols

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

將 ctrl+r 映射為運(yùn)行 C++ 代碼

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

最終結(jié)果

我們終于找到了 Vim 方式的操作方法?,F(xiàn)在,你只需按一個(gè)(組合)鍵,你編寫的 C++ 代碼就輸出在你的屏幕上,你不需要鍵入所有冗長(zhǎng)的命令了。這也節(jié)省了你的時(shí)間。

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

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

create function in vim for python

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

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

create function in vim for java

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

進(jìn)一步提高

所以,這就是如何在 Vim 中操作的方法?,F(xiàn)在,我們來看看如何在 Vim 中實(shí)現(xiàn)所有這些。我們可以直接在 Vim 中使用這些代碼片段,而另一種方法是使用 Vim 中的自動(dòng)命令 autocmd。autocmd 的優(yōu)點(diǎn)是這些命令無需用戶調(diào)用,它們?cè)谟脩羲峁┑娜魏翁囟l件下自動(dòng)執(zhí)行。

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

linux中怎么用一些超酷的功能使Vim變得更強(qiáng)大

autocmd in vimrc

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

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

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

以上是“l(fā)inux中怎么用一些超酷的功能使Vim變得更強(qiáng)大”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI