來自: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、資料庫、運維等。