背景
在linux無界面操作時如何用vim進行多文件的操作如文件間拷貝操作等。
vim在linux上的安裝
本人用的centos,其命令如下:
sudo yum install vim
用vim同時編輯多個文件
方法1
新建兩個txt文件file1.txt和file2.txt,內容隨意。然後運行下面的命令:
vim file1.txt file2.txt
vim file1.txt file2.txt
多文件打開和切換
:n #切換到下一個文件
:N #切換到上一個文件
note:vim不允許存在未保存更改的情況下切換到下一個文件
ZZ #保存文件
瀏覽當前正在編輯的文件
:buffers
使用buffer命令切換到某一文件
buffer n (b n) #n爲使用buffers命令後文件的序號
例如切換到第一個文件可使用命令:
:buffer 1(b 1)
在buffer中常用一些命令簡單的實現文件切換
命令 | 含義 |
---|---|
:bf | 切換到第一個文件 |
:bl | 切換到最後一個文件 |
:bn | 切換到下一個文件 |
:bp | 切換到上一個文件 |
:b n | 切換到第n個文件 |
:bw | 關閉當前文件 |
在已經當開文件的情況下,額外添加一個文件用於編輯可用命令:
:e file3.txt #file3.txt爲添加用於編輯的文件
用buffers命令可以看到file3文件已經被打開,這裏有一點需要注意一下,這種情況下不能用 :e 命令切換到file3,如果要切換文件可用 buffe n 命令
複製一個文件的內容到其他文件
單行復制
下面是將file1的內容複製到當前文件的步驟
- 切換到第一個文件
buffer 1
- 使用命令 yy 複製某一行
- 切換到第二個文件
buffer 2
- 光標定位到粘貼位置,使用 p 命令完成粘貼
- 保存更改到當前文件: ZZ
- 保存所有文件的更改並退出: wq
整個文件內容複製
上面的步驟完成了將單行內容複製到其他文件中。如果需要將一個文件的全部內容複製到其他文件中,應該怎麼辦?
將文件1的內容複製並粘貼到文件2的第二行:
- 打開文件2
vim file2.txt
若file2已經打開,可以使用 buffer n 切換到file2
- 將光標移動到第五行:
:5(:5G)
- 執行命令:
r file1.txt
此時可以看到內容拷貝成功
- 保存當前文件的修改
ZZ
- 保存所有打開文件並退出
:wq
方法2
在打開文件時加入 -o 選項,文件內容以垂直分佈在一個頁面中
vim -o file1.txt file2.txt
切換兩個文件使用命令 ctrl-w w
或者使用:
Ctrl-w k -頂層窗口
Ctrl-w j -底層窗口
文件內容以水平分佈在一個頁面中使用 -O選項
切換命令
Ctrl-w l -左窗口
Ctrl-w h -右窗口
其他操作同方法1
對比
方法2與方法1不同的是一旦使用 ZZ 來保存當前文件的改動時,會自動關閉該文件,同時需要一個文件一個文件的執行 :wq 命令;使用方法1時,執行一次 :wq 命令就可以保存所有文件的更改。