在前面的文章中,小编整理了基本Vi/VIm技能的提示和技巧,除了一些特定的原因之外,学习如何在Linux中有效使用文本编辑器是系统管理员或工程师的一项必备能力,并且是通过任何主要Linux认证体系(例如LFCS、LFCE、RHCSA和RHCE)所需的能力。
在本文中,小编将整理一些更强大的Vi/Vim使用技巧,如果你能掌握以下内容,那么使用Vi/Vim工具将会更加的驾轻就熟。废话不多说,一起来看看吧。
创建水平或垂直的Vim窗口
事实上,你可以启动具有多个水平或垂直分区的Vi/Vim,以在同一主窗口内编辑单独的文件。以下是使用两个水平窗口启动Vi/Vim,test1位于顶部,test2位于底部,如下所示:
vim -o test1 test2
使用两个垂直窗口启动Vi/Vim,test3位于左侧,test4位于右侧,如下所示:
vim -O test3 test4
h:
右、l:
左、j:
下、k:
上)来在不同的窗口之间切换光标。
- Ctrl+w k – 顶部
- Ctrl+w j – 底部
- Ctrl+w l – 向左
- Ctrl+w h – 向右
在Vim中更改大写或小写
请注意,此技巧仅适用于Vim工具。在下面的示例中,X是一个整数。
- 要将一系列字母更改为大写,请将光标置于第一个字母上,然后在ex模式下键入gUX,最后按键盘上的向右箭头。
- 要更改X个单词数,请将光标置于单词的开头,然后在ex模式下键入gUXw。
- 要将整行更改为大写,请将光标置于该行的任意位置并在ex模式下键入gUU。
例如,要将整个小写行转换为大写,那么应该将光标放在该行的任意位置并输入gUU:
例如,要将2个大写单词转换为小写,应该将光标放在第一个单词的开头并输入gu2w:
在Vim插入模式下删除文本
虽然你可以在ex模式中删除字符或多个单词(例如,dw删除一个单词),但你也可以在插入模式中进行如下操作:
- Ctrl + h:删除光标当前所在处的前一个字符。
- Ctrl + w:删除光标当前所在处的上一个单词。为了使其正常工作,光标必须放置在需要删除的单词后面的空白处。
- Ctrl + u:删除从光标所在位置左边的字符开始的当前行。
在Vim中移动或复制现有行
现在,撤销最后一次的操作(Esc + u),然后输入:1move7将第7行替换为第1行。请注意第2到第7行是上移的,而原来的第1行现在占据了第7行的位置,如下图所示:
在Vim中导航和计算模式匹配
本技巧是基于替代命令(上部文章中的第七个技巧),唯一的区别在于它不会删除任何内容,因为替换行为被n选项覆盖,从而得到指定模式出现次数的计数。
请确保不要漏掉任何正斜杠!
:%s/pattern//gn
例如,寻找“libero”单词,命令如下:
:%s/libero//gn
在ex模式下,按n键(小写 n)可移动到下一个模式匹配项。要移动到上一个实例,按N键。
在Vim中打开文件的指定行
默认情况下,当你启动Vi/Vim时,光标最初放置在编辑的最后一行。如果你想打开程序并让光标直接放在指定行上,可以使用以下技巧:
# vim filename +line_number
例如,打开forever.txt并将光标置于第6行,可以写为:
# vim forever.txt +6
接下来让我们稍微调整一下这个例子。假设我们想要在出现第三次模式匹配的行上打开文件,可以写为:
# vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)
这里简单介绍下上面的命令做了什么:
- grep -in pattern filename:显示文件名中出现模式的所有行,行号位于每个输出行的开头。
- sed -n 3p: 会显示前面管道输出的第三行。
- cut -d:-f1:返回上一个管道的第一个字段,冒号
(:)
是字段分隔符。
grep -in forever forever.txt grep -in forever forever.txt | sed -n 3p grep -in forever forever.txt | sed -n 3p | cut -d: -f1
这样前面命令的结果然后传递给Vi/Vim,以在指定的行打开程序。上面的示例返回值是5传递给了Vi/Vim。
定制Vim环境
如果你使用Vi/Vim编辑配置文件或编写代码,你可能希望在首次打开程序时显示行号,并设置自动缩进,这样当你按下回车键时,光标将自动放置在正确的位置。此外,你可能还想自定义一个制表符占据的空格数。
虽然你可以每次启动Vi/Vim时都这样做,但更容易的方法是在~/.vimrc
中设置这些选项,这样它们将自动应用:
set number set autoindent set shiftwidth=4 set softtabstop=4 set expandtab
有关自定义Vi/Vim环境的更多选项,可以参考一些Vim资料文档。
使用Vimtutor获取一般Vim帮助
如果你需要提高一下你的Vi/Vim技能,可以从命令行启动vimtutor,它会显示完整的Vi/Vim帮助,你可以随时参考,而无需打开网页浏览器搜索如何在Vi/Vim工具中完成某个任务。
vimtutor
请注意,你可以导航或搜索Vimtutor的内容,就像在Vi/Vim中导航常规文件一样。
总结
上面分享了一些高级Vi/Vim提示和使用技巧,它们应该可以帮助你在使用命令行工具编辑文本时更加有效。当前,肯定还是有一些其它方法技巧的,这里就不一一列举了,可以自行找些资料看看。
众所周知,掌握Vi/Vim技巧有着重要的意义,特别是对于Linux管理员和开发人员来说具体以下功能作用:
- 效率提升: 由于Vi/Vim的快捷键和命令丰富,可以快速完成各种编辑任务,节省大量时间。
- 无需图形界面: 无需图形界面即可运行,适用于SSH远程连接等场景,方便在服务器上进行编辑操作。
- 强大的编辑功能: 该工具提供了许多强大的编辑功能,如多级撤销、正则表达式搜索替换、宏录制等,适用于处理复杂的文本编辑任务。
- 跨平台兼容性: 它是跨平台的编辑器,在各种操作系统上都可以运行,包括 Linux、Unix、macOS 等,具有良好的兼容性。
- 开源自定义: 用户可以根据自己的需求定制配置文件(如 .vimrc),添加插件和主题,使编辑器更加适合个人习惯和工作流程。
总的来说,掌握Vi/Vim技巧可以帮助用户更高效地进行文本编辑和编程工作,提升工作效率和质量。如果你想更方便的使用命令行编辑器,那么了解上述内容百利而无一害。