日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

vi执行Linux命令,如何从Vim中访问shell或运行外部命令

發(fā)布時(shí)間:2024/10/8 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vi执行Linux命令,如何从Vim中访问shell或运行外部命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

您可能已經(jīng)知道,Vim是功能強(qiáng)大且功能強(qiáng)大的編輯器。 在Howtoing中,我們?cè)赩im上編寫(xiě)了幾個(gè)教程,涵蓋了其基本用法 , 插件以及其他一些有用的功能。 但是鑒于Vim提供的功能,我們總是找到一些有用的東西來(lái)分享我們的讀者群。

在本教程中,我們將重點(diǎn)介紹如何執(zhí)行外部命令以及從編輯器窗口訪問(wèn)命令行shell。

But before we start doing that, it's worth mentioning that?all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

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

有時(shí)您可能需要在Vim編輯器窗口內(nèi)執(zhí)行外部命令。 例如,考慮一種情況,您在Vim中打開(kāi)了一個(gè)文件,進(jìn)行了一些更改,然后在嘗試保存這些更改時(shí),Vim會(huì)拋出一個(gè)錯(cuò)誤,表示您沒(méi)有足夠的權(quán)限。

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

稍后我們?cè)倩氐缴厦娴挠美?**),但現(xiàn)在我們來(lái)了解如何從vim中運(yùn)行基本的命令。

假設(shè)在編輯文件時(shí),您想知道文件所包含的行數(shù),字?jǐn)?shù)和字符數(shù)。 為了做到這一點(diǎn),在Vim的命令模式下,只需輸入一個(gè)冒號(hào)(:),然后是一個(gè)bang(!),最后是命令(在這種情況下為'wc'),后跟文件名(使用當(dāng)前文件的%)。:! wc %

以下是一個(gè)例子:

具有上述命令的文件準(zhǔn)備執(zhí)行:

這是終端的輸出:

看完輸出后,按Enter鍵,您將被帶回Vim會(huì)話。

在您正在編寫(xiě)代碼或腳本,并希望快速知道代碼/腳本是否包含任何編譯時(shí)或語(yǔ)法錯(cuò)誤的情況下,此功能可以非常方便。

繼續(xù),如果需要將輸出添加到文件,請(qǐng)使用':read!' 命令。 以下是一個(gè)例子::read ! wc %

'read'命令將外部命令的輸出插入正在編輯的文件中當(dāng)前行下方的新行。 如果需要,您還可以指定特定的行號(hào) - 輸出將在特定行之后添加。

例如,以下命令將在文件的第二行之后添加“wc”的輸出。:2read ! wc %

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

現(xiàn)在,回到我們?cè)陂_(kāi)始(**)中討論的usecase,這里的命令將幫助您保存文件,而不需要先關(guān)閉它(這意味著沒(méi)有丟失未保存的更改),然后打開(kāi)它,說(shuō), sudo 。:w ! sudo tee %

訪問(wèn)外殼在Vim

除了執(zhí)行單個(gè)命令之外,您還可以將自己從Vim中的新啟動(dòng)的shell中刪除。 為此,您需要做的是從編輯器運(yùn)行以下命令::shell

要么:sh

并在完成shell工作時(shí)鍵入“exit” - 這將使您重新進(jìn)入從最初離開(kāi)的Vim會(huì)話。

要記住的漏洞

雖然訪問(wèn)shell的能力肯定在現(xiàn)實(shí)世界中有其自己的用途,但它也可以用作特權(quán)升級(jí)技術(shù)。 正如我們之前的教程(在sudoedit中)所解釋的那樣,即使您提供用戶sudo訪問(wèn)權(quán)限,只能通過(guò)Vim編輯一個(gè)文件,他們也可以使用這種技術(shù)從編輯器中啟動(dòng)一個(gè)新的shell,然后可以做“root”或超級(jí)用戶。

結(jié)論

在Vim中運(yùn)行外部命令的能力是一個(gè)重要的功能,可以在許多情況下派上用場(chǎng)(其中一些我們?cè)诒窘坛讨刑岬竭^(guò))。 這個(gè)功能的學(xué)習(xí)曲線并不陡峭,所以初學(xué)者和有經(jīng)驗(yàn)的用戶都可以利用它。

你現(xiàn)在使用這個(gè)功能已經(jīng)有一段時(shí)間了嗎? 你有分享的東西嗎? 請(qǐng)?jiān)谙旅娴囊庖?jiàn)中留下您的想法。

總結(jié)

以上是生活随笔為你收集整理的vi执行Linux命令,如何从Vim中访问shell或运行外部命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。