如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令

這篇文章給大家分享的是有關(guān)如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比淅川網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式淅川網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋淅川地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

在 Vim 中執(zhí)行外部命令

有的時(shí)候,你可能需要在 Vim 編輯窗口中執(zhí)行外部的命令。例如,想象一下這種場(chǎng)景:你已經(jīng)在 Vim 中打開(kāi)了一個(gè)文件,并做了一些修改,然后等你嘗試保存這些修改的時(shí)候,Vim 拋出一個(gè)錯(cuò)誤說(shuō)你沒(méi)有足夠的權(quán)限。

如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令

現(xiàn)在,退出當(dāng)前的 vim 會(huì)話,重新使用足夠的權(quán)限打開(kāi)文件將意味著你會(huì)丟失所做的所有修改,所以,你可能贊同,在大多數(shù)情況不是只有一個(gè)選擇。像這樣的情況,在編輯器內(nèi)部運(yùn)行外部命令的能力將會(huì)派上用場(chǎng)。

稍后我們?cè)倩貋?lái)上面的用例,但是現(xiàn)在,讓我們了解下如何在 vim 中運(yùn)行基本的命令。

假設(shè)你在編輯一個(gè)文件,希望知道這個(gè)文件包含的行數(shù)、單詞數(shù)和字符數(shù)。為了達(dá)到這個(gè)目的,在 vim 的命令行模式下,只需要輸入冒號(hào) :,接下來(lái)一個(gè)感嘆號(hào) !,最后是要執(zhí)行的命令(這個(gè)例子中使用的是 wc)和緊接著的文件名(使用 % 表示當(dāng)前文件)。

:! wc %

這是一個(gè)例子:

填入的上面提及的命令行準(zhǔn)備執(zhí)行:

如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令

下面是終端上的輸出:

如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令

在你看到輸出之后,輸入回車(chē)鍵,你將會(huì)退回到你的 vim 會(huì)話中。

你正在編寫(xiě)代碼或者腳本,并且希望盡快知道這段代碼或者腳本是否包含編譯時(shí)錯(cuò)誤或者語(yǔ)法錯(cuò)誤,這個(gè)時(shí)候,這種特性真的很方便。

繼續(xù),如果需求是添加輸出到文件中,使用 :read ! 命令。接下來(lái)是一個(gè)例子:

:read ! wc %

read 命令會(huì)把外部命令的輸出作為新的一行插入到編輯的文件中的當(dāng)前行的下面一行。如果你愿意,你也可以指定一個(gè)特定的行號(hào)輸出將會(huì)添加到特定行之后。

例如,下面的命令將會(huì)在文件的第二行之后添加 wc 的輸出。

:2read ! wc %

注意: 使用 $ 在最后一行插入, 0 在第一行前面插入。

現(xiàn)在,回到最開(kāi)始我們討論的一個(gè)用例,下面的命令將會(huì)幫助你保存文件而不需要先關(guān)閉文件(這將意味著沒(méi)有保存的內(nèi)容不會(huì)丟失)然后使用 sudo 命令重新打開(kāi)。

:w ! sudo tee %

如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令

在 Vim 中訪問(wèn) shell

除了可以執(zhí)行單獨(dú)的命令,你也可以在 vim 中放入自己新創(chuàng)建的 shell。為了達(dá)到這種目的,在編輯器中你必須要做的是運(yùn)行以下的命令:

:shell

或者:

:sh

當(dāng)你執(zhí)行完了你的 shell 任務(wù),輸入 exit這將帶你回到原來(lái)離開(kāi)的 Vim 會(huì)話中。

要謹(jǐn)記的漏洞

雖然在真實(shí)世界中,能夠訪問(wèn)的 shell 絕對(duì)符合它們的用戶權(quán)限,但是它也可以被用于提權(quán)技術(shù)。正如我們?cè)谠缙诘囊黄恼拢ㄔ?sudoedit 上)解釋的那樣,即使你提供給一個(gè)用戶 sudo 的權(quán)限只是通過(guò) Vim 編輯一個(gè)文件,他們?nèi)钥梢允褂眠@項(xiàng)技術(shù)從編輯器中運(yùn)行一個(gè)新的 shell,而且他們可以做 root 用戶或者管理員用戶可以做的所有內(nèi)容。

感謝各位的閱讀!關(guān)于“如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁(yè)名稱(chēng):如何從Vim中訪問(wèn)shell或者運(yùn)行外部命令
文章位置:http://www.muchs.cn/article20/ihehjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站設(shè)計(jì)用戶體驗(yàn)、外貿(mào)建站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)