背景
在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 命令就可以保存所有文件的更改。