Vim 是個很是好用的工具,不少人一旦開始使用 Vim 以後就再也沒法自拔。然而, Vim 仍然有其自身缺陷。陡峭的學習曲線是缺陷之一,在某些使用場景上的侷限也不能忽視。今天咱們爲你們介紹兩個方法,來解決使用中的痛點。linux
我會向你們介紹 Vim-anywhere,這是一個簡單的腳本,它容許你使用 Vim 編輯器在 Linux 中的任何地方輸入文本。這意味着你能簡單地調用本身最愛的 Vim 編輯器,輸入任何你所想的,並將這些文本粘貼到任意的應用和網站中。這些文本將在剪貼板可用,直到你重啓了系統。這個工具對那些喜歡在非 Vim 環境中使用 Vim 鍵位綁定的人來講十分有用。git
Vim-anywhere 工具能夠運行在任何基於 GNOME(或其餘衍生品)的 Linux 發行版上。另外,確保你已經安裝了下面的依賴。github
Curlweb
Gitvim
gVimbash
xclipapp
好比,你能夠用下面的命令在 Ubuntu 中安裝這些工具:curl
$ sudo apt install curl git vim-gnome xclip
而後運行以下的命令來安裝 Vim-anywhere:編輯器
$ curl -fsSL https://raw.github.com/cknadler/vim-anywhere/master/install | bash
Vim-anywhere 到此已經安裝完成。如今咱們來看看如何使用它。ide
在任何地方使用 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 <custom 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
本文由馬哥教育Python學員提供支持,若是你在學習Python的過程當中遇到了問題,歡迎經過QQ:2282011279 或電話:15652199186 和我聯繫。