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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

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

您可能已經知道,Vim是功能強大且功能強大的編輯器。 在Howtoing中,我們在Vim上編寫了幾個教程,涵蓋了其基本用法 , 插件以及其他一些有用的功能。 但是鑒于Vim提供的功能,我們總是找到一些有用的東西來分享我們的讀者群。

在本教程中,我們將重點介紹如何執行外部命令以及從編輯器窗口訪問命令行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中執行外部命令

有時您可能需要在Vim編輯器窗口內執行外部命令。 例如,考慮一種情況,您在Vim中打開了一個文件,進行了一些更改,然后在嘗試保存這些更改時,Vim會拋出一個錯誤,表示您沒有足夠的權限。

現在,退出當前的vim會話并再次以足夠的權限打開文件將意味著您所做的所有更改都將丟失,因此,您將同意在大多數情況下不是一個選擇。 像這樣的情況,從編輯器中運行外部命令的能力派上用場。

稍后我們再回到上面的用例(**),但現在我們來了解如何從vim中運行基本的命令。

假設在編輯文件時,您想知道文件所包含的行數,字數和字符數。 為了做到這一點,在Vim的命令模式下,只需輸入一個冒號(:),然后是一個bang(!),最后是命令(在這種情況下為'wc'),后跟文件名(使用當前文件的%)。:! wc %

以下是一個例子:

具有上述命令的文件準備執行:

這是終端的輸出:

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

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

繼續,如果需要將輸出添加到文件,請使用':read!' 命令。 以下是一個例子::read ! wc %

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

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

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

現在,回到我們在開始(**)中討論的usecase,這里的命令將幫助您保存文件,而不需要先關閉它(這意味著沒有丟失未保存的更改),然后打開它,說, sudo 。:w ! sudo tee %

訪問外殼在Vim

除了執行單個命令之外,您還可以將自己從Vim中的新啟動的shell中刪除。 為此,您需要做的是從編輯器運行以下命令::shell

要么:sh

并在完成shell工作時鍵入“exit” - 這將使您重新進入從最初離開的Vim會話。

要記住的漏洞

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

結論

在Vim中運行外部命令的能力是一個重要的功能,可以在許多情況下派上用場(其中一些我們在本教程中提到過)。 這個功能的學習曲線并不陡峭,所以初學者和有經驗的用戶都可以利用它。

你現在使用這個功能已經有一段時間了嗎? 你有分享的東西嗎? 請在下面的意見中留下您的想法。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。