Vim学习笔记:编辑多个文件

| Comments

vim打开多个文件方法

  • 命令行下vim打开多个文件
1
vim f1.txt f2.txt f3.txt

vim会打开多个文件,但只显示第一个文件编辑状态。

vim加上-o-O选项分割窗口打开多个文件编辑。

1
2
vim -o f1.txt f2.txt f3.txt  #水平分割窗口
vim -O f1.txt f2.txt f3.txt  #垂直分割窗口
  • vim中打开另一个文件
1
:edit f2.txt

vim会关闭当前正在编辑的文件,打开指定新文件,如果当前文件修改了但未保存,vim 会报错。解决方法:

  • 保存 :write
  • 强制打开新文件 :edit! f2.txt

如果想编辑另外一个文件,又不想保持当前文件改动,可以使它变为一个隐藏的缓冲区

1
:hide edit f2.txt

文件间跳转

编辑完当前文件,可用:next开始下一个文件的编辑,如果未保持当前文件修改,会报错。 可强制跳转:next!或使用保持修改并打开下一个文件组合命令:wnext

其它跳转命令:

1
2
3
4
5
6
:previous   #回到上一文件
:wprevious  #保存当前修改,并回到上一文件
:last       #移到最后一个文件
:first      #移到第一个文件(没有:wlast,:wfirst组合命令)
:[count]next   #向后跳转count个文件,如 :2next
:[count]previous

两个文件间快速切换方法:

1
Ctrl-^

注意切换的两个文件指使用以上跳转命令跳转的当前文件和上一个文件。


查看多文件编辑信息

查看当前编辑哪个文件方法:

  • 窗口标题信息
  • 状态栏信息(2 of 3)

查看列表中有哪些文件

1
:args   # i.e :arguments

当前编辑的文件会用[]括起来


编辑另一个文件列表

1
:args f4.txt f5.txt f6.txt

也可以使用通配符匹配文件

1
:args *.txt

以上操作成功前提是当前文件已保存或使用强制命令:args!

标记

  • 预定义标记
1
2
`“  回到上次离开该文件时光标所在位置
`.  回到最后一次对文件作出修改的位置
  • 文件标记

全局标记(用于多文件),标记名为大写字母

1
[pos]m[TAG]

如:

50%mF —— 文件半中间(50%),标记名为F GmB —— 文件最后一行(G),标记名为B

设置好文件标记后,使用‘TAG跳转到文件标记处

1
2
'F
'B

使用含有实际意义的标记名容易记忆,如

1
2
3
H - header
M - Makefile
C - C source file

查询标记命令:

1
:marks TAG

可用Ctrl-O,Ctrl-I跳转到较早,较后某个位置


备份

:set backup 备份文件名设为‘原文件~‘

可通过:set backupext=.bak设置备份文件后缀为.bak

保留原始版本(第一次剪辑保存文件内容)命令::set patchmode=.orig

idea

使用sshfs+git备份大型机代码修改版本信息


不同文件间复制粘贴

步骤:

  • 复制源文件内容
  • 跳转到目的文件,将光标放到复制地方
  • 粘贴p/P

从一个文件中复制几块独立文本块到另一个文件中去,使用寄存器

使用“regCopy将寄存器reg中内容以Copy命令方式复制, 这里使用a~z共26个字母做为寄存器名字,如

1
2
3
"fyas   复制一个句子到寄存器f中,first
"l3y    复制3行内容到寄存器l中,line 
Ctrl-Vjjww"by 复制一个文本块到寄存器b中,block

使用“regPaste将寄存器reg中内容以Paste命令方式复制

如:

1
2
"fp
"wdaw

向另一个文件追加内容

1
:write >> logfile

将当前文件内容追加到logfile文件中

只读方式打开文件

1
2
vim -R file  或
view file

仍可以使用:w!强制写入,使用vim -M file禁止强制写入


另存为 :saveas filename,之后编辑的文件是新命名的文件

改变当前正在编辑文件名,但不想保存该文件 :file filename

Comments