歡迎光臨
每天分享高質量文章

兩個成倍提高工作效率的 Vim 使用技巧

來自:Linux中國

https://linux.cn/article-9637-1.html

https://linux.cn/article-9629-1.html

Vim 是個非常好用的工具,很多人一旦開始使用 Vim 之後就再也無法自拔。然而, Vim 仍然有其自身缺陷。陡峭的學習曲線是缺陷之一,在某些使用場景上的侷限也不能忽視。今天我們為大家介紹兩個方法,來解決使用中的痛點。


在任何地方使用 Vim


我會向大家介紹 Vim-anywhere,這是一個簡單的指令碼,它允許你使用 Vim 編輯器在 Linux 中的任何地方輸入文字。這意味著你能簡單地呼叫自己最愛的 Vim 編輯器,輸入任何你所想的,並將這些文字貼上到任意的應用和網站中。這些文字將在剪貼簿可用,直到你重啟了系統。這個工具對那些喜歡在非 Vim 環境中使用 Vim 鍵位系結的人來說十分有用。


在 Linux 中安裝 Vim-anywhere


Vim-anywhere 工具可以執行在任何基於 GNOME(或其他衍生品)的 Linux 發行版上。另外,確保你已經安裝了下麵的依賴。


  • Curl

  • Git

  • gVim

  • xclip


比如,你可以用下麵的命令在 Ubuntu 中安裝這些工具:


$ sudo apt install curl git vim-gnome xclip


然後執行如下的命令來安裝 Vim-anywhere:

$ curl -fsSL https://raw.github.com/cknadler/vim-anywhere/master/install | bash


Vim-anywhere 到此已經安裝完成。現在我們來看看如何使用它。

在任何地方使用 Vim 編輯器輸入文字


假如你需要建立一個 word 檔案。但是你更願意使用 Vim 編輯器,而不是 LibreOffice。沒問題,這裡 Vim-anywhere 就派上用場了。Vim-anywhere 自動化了整個流程。它僅僅簡單地呼叫 Vim 編輯器,所以你能寫任何你所想的,然後將之貼上到 .doc 檔案中。

讓我給你展示一個用例。開啟 LibreOffice 或者你選的任何圖形文字編輯器。然後開啟 Vim-anywhere。你只需要按下 CTRL+ALT+V 即可。它將會開啟 gVim 編輯器。按下 i 切換到互動樣式然後輸入文字。完成之後,鍵入 :wq 關閉並儲存檔案。



這些文字會在剪貼簿中可用,直到你重啟了系統。在你關閉編輯器之後,你之前的應用會重新佔據主介面。你只需按下 CTRL+P 將文字貼上進去。



這僅僅只是一個例子。你甚至可以使用 Vim-anywhere 在煩人的 web 表單或者其他應用上進行輸入。一旦 Vim-anywhere 被呼叫,它將會開啟一個緩衝區。關閉 Vim-anywhere 之後,緩衝器內的內容會自動複製到你的剪貼簿中,之前的應用會重新佔據主介面。


Vim-anywhere 在被呼叫的時候會在 /tmp/vim-anywhere 中建立一個臨時檔案。這些臨時檔案會一致儲存著,直到你重啟了系統,併為你提供臨時的歷史記錄。

$ ls /tmp/vim-anywhere


你可以用下麵的命令重新開啟最近的檔案:

$ vim $( ls /tmp/vim-anywhere | sort -r | head -n 1 )


更新 Vim-anywhere


執行下麵的命令來更新 Vim-anywhere:

$ ~/.vim-anywhere/update

更改快捷鍵


預設呼叫 Vim-anywhere 的鍵位是 CTRL+ALT+V。你可以用 gconf 工具將其更改為任何自定義的鍵位系結。

$ gconftool -t str --set /desktop/gnome/keybindings/vim-anywhere/binding 


解除安裝 Vim-anywhere


可能有些人覺得每次開啟 Vim 編輯器,輸入一些文字,然後將文字複製到其他應用中是沒有意義也毫無必要的。

如果你不覺得這個工具有用,只需使用下麵的命令來解除安裝它:

$ ~/.vim-anywhere/uninstall

同時修改多個檔案

有時候,您可能需要修改多個檔案,或要將一個檔案的內容複製到另一個檔案中。在圖形使用者介面中,您可以在任何圖形文字編輯器(如 gedit)中開啟檔案,並使用 CTRL + C 和 CTRL + V 複製和貼上內容。在命令列樣式下,您不能使用這種編輯器。不過別擔心,只要有 vim 編輯器就有辦法。在本教程中,我們將學習使用 vim 編輯器同時編輯多個檔案。相信我,很有意思噠。

我們可以用兩種方法做到這一點。

方法一


有兩個檔案,即 file1.txt 和 file2.txt,帶有一堆隨機單詞:

$ cat file1.txt
ostechnix
open source
technology
linux
unix

$ cat file2.txt
line1
line2
line3
line4
line5


現在,讓我們同時編輯這兩個檔案。請執行:

$ vim file1.txt file2.txt

Vim 將按順序顯示檔案的內容。首先顯示第一個檔案的內容,然後顯示第二個檔案,依此類推。



– 在檔案中切換


要移至下一個檔案,請鍵入:

:n

要傳回到前一個檔案,請鍵入:

:N


如果有任何未儲存的更改,Vim 將不允許您移動到下一個檔案。要儲存當前檔案中的更改,請鍵入:

ZZ


請註意,是兩個大寫字母 ZZ(SHIFT + zz)。

要放棄更改並移至上一個檔案,請鍵入:

:N!


要檢視當前正在編輯的檔案,請鍵入:

:buffers



您將在底部看到載入檔案的串列。



要切換到下一個檔案,請輸入 :buffer,後跟緩衝區編號。例如,要切換到第一個檔案,請鍵入:

:buffer 1


– 開啟其他檔案進行編輯


目前我們正在編輯兩個檔案,即 file1.txt 和 file2.txt。我想開啟另一個名為 file3.txt 的檔案進行編輯。


您會怎麼做?這很容易。只需鍵入 :e,然後輸入如下所示的檔案名即可:

:e file3.txt


現在你可以編輯 file3.txt 了。


要檢視當前正在編輯的檔案數量,請鍵入:

:buffers


請註意,對於使用 :e 開啟的檔案,您無法使用 :n 或 :N 進行切換。要切換到另一個檔案,請輸入 :buffer,然後輸入檔案緩衝區編號。


– 將一個檔案的內容複製到另一個檔案中


您已經知道瞭如何同時開啟和編輯多個檔案。有時,您可能想要將一個檔案的內容複製到另一個檔案中。這也是可以做到的。切換到您選擇的檔案,例如,假設您想將 file1.txt 的內容複製到 file2.txt 中:


首先,請切換到 file1.txt:

:buffer 1

將游標移動至在想要複製的行的前面,並鍵入yy 以抽出(複製)該行。然後,移至 file2.txt:

:buffer 2

將游標移至要從 file1.txt 貼上複製行的位置,然後鍵入 p。例如,您想要將複製的行貼上到 line2 和 line3 之間,請將滑鼠游標置於行前並鍵入 p。

輸出示例:

line1
line2
ostechnix
line3
line4
line5


要儲存當前檔案中所做的更改,請鍵入:

ZZ


再次提醒,是兩個大寫字母 ZZ(SHIFT + z)。

儲存所有檔案的更改並退出 vim 編輯器,鍵入:

:wq


同樣,您可以將任何檔案的任何行複製到其他檔案中。

– 將整個檔案內容複製到另一個檔案中


我們知道如何複製一行,那麼整個檔案的內容呢?也是可以的。比如說,您要將 file1.txt 的全部內容複製到 file2.txt 中。

先開啟 file2.txt:

$ vim file2.txt


如果檔案已經載入,您可以透過輸入以下命令切換到 file2.txt:

:buffer 2


將游標移動到您想要貼上 file1.txt 的內容的位置。我想在 file2.txt 的第 5 行之後貼上 file1.txt的內容,所以我將游標移動到第 5 行。然後,鍵入以下命令並按回車鍵:

:r file1.txt



這裡,r 代表 “read”。


現在您會看到 file1.txt 的內容被貼上在 file2.txt 的第 5 行之後。

line1
line2
line3
line4
line5
ostechnix
open source
technology
linux
unix


要儲存當前檔案中的更改,請鍵入:

ZZ


要儲存所有檔案的所有更改並退出 vim 編輯器,請輸入:

:wq


方法二


另一種同時開啟多個檔案的方法是使用 -o 或 -O 標誌。

要在水平視窗中開啟多個檔案,請執行:

$ vim -o file1.txt file2.txt


要在視窗之間切換,請按 CTRL-w w(即按 CTRL + w 並再次按 w)。或者,您可以使用以下快捷方式在視窗之間移動:


  • CTRL-w k – 上面的視窗

  • CTRL-w j – 下麵的視窗


要在垂直視窗中開啟多個檔案,請執行:

$ vim -O file1.txt file2.txt file3.txt


要在視窗之間切換,請按 CTRL-w w(即按 CTRL + w 並再次按 w)。或者,使用以下快捷方式在視窗之間移動:


  • CTRL-w l – 左面的視窗

  • CTRL-w h – 右面的視窗


其他的一切都與方法一的描述相同。


例如,要列出當前載入的檔案,請執行:

:buffers


在檔案之間切換:

:buffer 1


開啟其他檔案,請鍵入:

:e file3.txt


將檔案的全部內容複製到另一個檔案中:

:r file1.txt


方法二的唯一區別是,只要您使用 ZZ 儲存對當前檔案的更改,檔案將自動關閉。然後,您需要依次鍵入 :wq 來關閉檔案。但是,如果您按照方法一進行操作,輸入 :wq 時,所有更改將儲存在所有檔案中,並且所有檔案將立即關閉。

有關更多詳細資訊,請參閱手冊頁。

$ man vim



編號547,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

駭客技術與網路安全

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂