溫馨提示×

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

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

在 shell 中使用 vi 模式

發(fā)布時(shí)間:2020-05-20 03:31:56 來(lái)源:網(wǎng)絡(luò) 閱讀:1078 作者:馬哥教育 欄目:系統(tǒng)運(yùn)維

   作為一名大型開源社區(qū)的參與者,更確切地說(shuō),作為 Fedora 項(xiàng)目的成員,我有機(jī)會(huì)與許多人會(huì)面并討論各種有趣的技術(shù)主題。

    我最喜歡的主題是“命令行”或者說(shuō) shell,因?yàn)榱私馊藗內(nèi)绾问炀毷褂?shell 可以讓你深入地了解他們的想法,他們喜歡什么樣的工作流程,以及某種程度上是什么激發(fā)了他們的靈感。

    許多開發(fā)和運(yùn)維人員在互聯(lián)網(wǎng)上公開分享他們的“ dot 文件”(他們的 shell 配置文件的常見(jiàn)俚語(yǔ)),這將是一個(gè)有趣的協(xié)作機(jī)會(huì),讓每個(gè)人都能從對(duì)命令行有豐富經(jīng)驗(yàn)的人中學(xué)習(xí)提示和技巧并分享快捷方式以及有效率的技巧。

    今天我在這里會(huì)為你介紹 shell 中的 vi 模式。

    在計(jì)算和操作系統(tǒng)的龐大生態(tài)系統(tǒng)中有很多 shell。然而,在 Linux 世界中,bash 已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn),并在在撰寫本文時(shí),它是所有主要 Linux 發(fā)行版上的默認(rèn) shell。因此,它就是我所說(shuō)的 shell。

    需要注意的是,bash 在其他類 UNIX 操作系統(tǒng)上也是一個(gè)相當(dāng)受歡迎的選項(xiàng),所以它可能跟你用的差別不大(對(duì)于 Windows 用戶,可以用 cygwin)。

    在探索 shell 時(shí),首先要做的是在其中輸入命令并得到輸出,如下所示:

在 shell 中使用 vi 模式

    這是常見(jiàn)的練習(xí),可能每個(gè)人都做過(guò)。沒(méi)接觸過(guò)的人和新手可能沒(méi)有意識(shí)到 bash shell 的默認(rèn)輸入模式是 Emacs 模式,也就是說(shuō)命令行中所用的行編輯功能都將使用 Emacs 風(fēng)格的“鍵盤快捷鍵”。(行編輯功能實(shí)際上是由 GNU Readline 進(jìn)行的。)

    例如,如果你輸入了 echo "Hello Wrld!",并意識(shí)到你想要快速跳回一個(gè)單詞(空格分隔)來(lái)修改打字錯(cuò)誤,而無(wú)需按住左箭頭鍵,那么你可以同時(shí)按下 Alt+b,光標(biāo)會(huì)將向后跳到 W。

在 shell 中使用 vi 模式

    這只是使用提供給 shell 用戶的諸多 Emacs 快捷鍵組合之一完成的。還有其他更多東西,如復(fù)制文本、粘貼文本、刪除文本以及使用快捷方式來(lái)編輯文本。

    使用復(fù)雜的快捷鍵組合并記住可能看起來(lái)很愚蠢,但是在使用較長(zhǎng)的命令或從 shell 歷史記錄中調(diào)用一個(gè)命令并想再次編輯執(zhí)行時(shí),它們可能會(huì)非常強(qiáng)大。

    盡管 Emacs 的鍵盤綁定都不錯(cuò),如果你對(duì) Emacs 編輯器熟悉或者發(fā)現(xiàn)它們很容易使用也不錯(cuò),但是仍有一些人覺(jué)得 “vi 風(fēng)格”的鍵盤綁定更舒服,因?yàn)樗麄兘?jīng)常使用 vi 編輯器(通常是 vim 或 nvim)。

    bash shell(再說(shuō)一次,通過(guò) GNU Readline)可以為我們提供這個(gè)功能。要啟用它,需要執(zhí)行命令 $ set -o vi。

    就像魔術(shù)一樣,你現(xiàn)在處于 vi 模式了,現(xiàn)在可以使用 vi 風(fēng)格的鍵綁定來(lái)輕松地進(jìn)行編輯,以便復(fù)制文本、刪除文本、并跳轉(zhuǎn)到文本行中的不同位置。這與 Emacs 模式在功能方面沒(méi)有太大的不同,但是它在你如何與 shell 進(jìn)行交互執(zhí)行操作上有一些差別,根據(jù)你的喜好這是一個(gè)強(qiáng)大的選擇。

    我們來(lái)看看先前的例子,但是在這種情況下一旦你在 shell 中進(jìn)入 vi 模式,你就處于 INSERT 模式中,這意味著你可以和以前一樣輸入命令,現(xiàn)在點(diǎn)擊 Esc 鍵,你將處于 NORMAL 模式,你可以自由瀏覽并進(jìn)行文字修改。

    看看先前的例子,如果你輸入了 echo "Hello Wrld!",并意識(shí)到你想跳回一個(gè)單詞(再說(shuō)一次,用空格分隔的單詞)來(lái)修復(fù)那個(gè)打字錯(cuò)誤,那么你可以點(diǎn)擊 Esc 從 INSERT 模式變?yōu)?NORMAL 模式。然后,您可以輸入 B(即 Shift+b),光標(biāo)就能像以前那樣回到前面了。(有關(guān) vi 模式的更多信息,請(qǐng)參閱這里。):

在 shell 中使用 vi 模式

    現(xiàn)在,對(duì)于 vi/vim/nvim 用戶來(lái)說(shuō),你會(huì)驚喜地發(fā)現(xiàn)你可以一直使用相同的快捷鍵,而不僅僅是在編輯器中編寫代碼或文檔的時(shí)候。如果你從未了解過(guò)這些,并且想要了解更多,那么我可能會(huì)建議你看看這個(gè)交互式 vim 教程,看看 vi 風(fēng)格的編輯是否有你所不知道的。

    如果你喜歡在此風(fēng)格下與 shell 交互,那么你可以在主目錄中的 ~/.bashrc 文件底部添加下面的行來(lái)持久設(shè)置它。

在 shell 中使用 vi 模式

    對(duì)于 emacs 模式的用戶,希望這可以讓你快速并愉快地看到 shell 的“另一面”。在結(jié)束之前,我認(rèn)為每個(gè)人都應(yīng)該使用任意一個(gè)讓他們更有效率的編輯器和 shell 行編輯模式,如果你使用 vi 模式并且這篇文章給你展開了新的一頁(yè),那么恭喜你!現(xiàn)在就變得更有效率吧。

作者簡(jiǎn)介:

    Adam Miller 是 Fedora 工程團(tuán)隊(duì)成員,專注于 Fedora 發(fā)布工程。他的工作包括下一代構(gòu)建系統(tǒng)、自動(dòng)化、RPM 包維護(hù)和基礎(chǔ)架構(gòu)部署。Adam 在山姆休斯頓州立大學(xué)完成了計(jì)算機(jī)科學(xué)學(xué)士學(xué)位與信息保障與安全科學(xué)碩士學(xué)位。他是一名紅帽認(rèn)證工程師(Cert#110-008-810),也是開源社區(qū)的活躍成員,并對(duì) Fedora 項(xiàng)目(FAS 帳戶名稱:maxamillion)貢獻(xiàn)有著悠久的歷史。

向AI問(wèn)一下細(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