如何使用 Vim 編輯器編輯多個文件

Linux愛好者2018-05-14 09:12:19

(點擊上方公眾號,可快速關注)


英文:SK,翻譯:Linux中國/jessie-pang

www.oschina.net/news/95947/controversy-caused-by-a-joke



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


安裝 Vim


Vim 編輯器可在大多數 Linux 發行版的官方軟件倉庫中找到,所以您可以用默認的軟件包管理器來安裝它。例如,在 Arch Linux 及其變體上,您可以使用如下命令:


$ sudo pacman -S vim


在 Debian 和 Ubuntu 上:


$ sudo apt-get install vim


在 RHEL 和 CentOS 上:


$ sudo yum install vim


在 Fedora 上:


$ sudo dnf install vim


在 openSUSE 上:


$ sudo zypper install vim


使用 Linux 的 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



看完本文有收穫?請分享給更多人

關注「Linux 愛好者」,提升Linux技能

閱讀原文

TAGS:文件使用vim 編輯器方法一