Vim中的查找替换基本语法
:[范围]s/查找内容/替换为的内容/[标志]
-
范围:可以是一个行号,一对行号(用
,
分隔),或者特殊标记。例如,1,10
表示从第1行到第10行;%
表示整个文件。 -
查找内容:是你想要查找的文本,可以使用正则表达式来指定更复杂的搜索模式。
-
替换为的内容:是当查找内容被找到时,你想要替换成的文本。
-
标志:控制替换的行为。常用的标志有:
-
g
(global):不加此标志时,每行只替换第一个匹配的内容;加上g
后,替换每行中所有匹配的内容。 -
c
(confirm):对每个替换进行确认。 -
i
(ignore case):忽略大小写进行匹配。
-
常用示例
-
替换当前行第一个匹配的内容:
:s/old/new/
这会在当前行查找"old",并将其替换为"new"。
-
替换当前行所有匹配的内容:
:s/old/new/g
加上
g
标志,意味着替换该行内所有"old"为"new"。 -
全文件替换第一个匹配的内容:
:%s/old/new/
使用
%
表示整个文件,但由于没有g
标志,每行只替换首次出现的"old"。 -
全文件替换所有匹配的内容,并要求确认:
:%s/old/new/gc
在整个文件中替换所有的"old"为"new",并且每次替换前都会要求确认。
-
区间替换:
:10,20s/old/new/g
只在第10行到第20行之间替换所有的"old"为"new"。
-
忽略大小写替换:
:%s/old/new/gi
在整个文件中替换所有的"old"为"new",忽略大小写。
vim分屏显示
1、水平分割打开两个文件
vim -o test1.txt test2.txt
2、垂直分割打开两个文件
vim -O test1.txt test2.txt
三、中途分屏打开新文件
我们先打开一个文件test1.txt
vim test1.txt
如下
然后想中途分屏打开另一个文件test2.txt
,此时在vim
当前状态下,按Esc
,然后输入:vs test2.txt
,按回车,此时就可以以分屏的方式打开test2.txt
如果想水平分割打开,则用:sp test2.txt
四、中途创建空白分屏
在vim
当前状态下,按Esc
,然后输入:new
,按回车 如下
五、关闭分屏
在vim
当前状态下,按Esc
,然后输入:only
,按回车 如下 如果想退出某个分屏,则在那个分屏下,执行
:q
即可。
六、多个分屏之间切换
在vim
当前状态下,按Esc
,然后按住CTRL
不放,连按两次w
,即可按顺序在分屏之间切换 如下 补充,
[CTRL] [w] h
跳转到左边的窗口 [CTRL] [w] j
跳转到下边的窗口 [CTRL] [w] k
跳转到上边的窗口 [CTRL] [w] l
跳转到右边的窗口 [CTRL] [w] t
跳转到最顶上的窗口 [CTRL] [w] b
跳转到最顶下的窗口
其中[CTRL] [w]
表示按住CTRL + w
不放的意思。
vim报错E325
这就启发了我们,原来我们在编辑文件的时候,并不是对原有文件进行修改和覆盖的,而是新建一个副本,名字叫xx.swp,我们对文件的编辑都放在了这个副本里面,这也是为什么我们能进行撤销的原因,我们并没有对原有的文件进行修改。当我们正常退出时,这个文件就正常消失,而当我们异常退出时,这个文件就会作为隐藏文件,当我们下次启动vim时,它就会提示我们上次编辑时,有一个文件异常退出了,是否要进行恢复。也就是弹出E325错误。当我们异常退出时,这个隐藏文件会帮助我们还原到上次编辑的状态。也就相当于是一个自动保存的功能。
[O]pen Read-Only:以只读模式打开文件,这样你就可以查看文件的内容,但不能进行编辑。 (E)dit anyway:强制编辑文件,即使存在交换文件。这种情况下,交换文件将被忽略,但是如果有其他进程正在编辑同一个文件,可能会导致编辑冲突,因此要小心操作。 (R)ecover:恢复上一次编辑会话的内容,以免意外丢失更改。 (Q)uit:退出编辑器,不做任何更改。 (A)bort:放弃当前编辑会话,退出编辑器,并删除交换文件。
解决办法: 当我们知道了这个机制,我们就要考虑如何去解决这种问题。
(1)还原到上次编辑的状态,然后再删除掉.swp文件,做法:vim -r filename(你上次未保存的文件名),会出现以下界面
左侧会出现一个Recovery completed,告诉你文件已经还原到了上次编辑的状态,而右侧会多出一个swo文件,这个文件类似于swp用来保存你修改文件的副本,而swp文件是我们用来还原的副本。当我们还原之后,可以使用rm -f xx.swp 删除掉这个副本。
(2)当我们不需要还原的时候,只需要我们直接删除这个副本就可以了。利用rm命令直接删除这个副本。