在本系列的前一篇文章中,我们回顾了7个可添加到您的vi/m技能集中的技巧和窍门,除了之前提到的原因,学习如何有效地使用文本编辑器在Linux中是系统管理员或工程师的基本能力,也是通过任何主要Linux认证计划(如LFCS,LFCE,RHCSA和RHCE)的必备能力。
话虽如此,让我们开始吧。
8. 创建水平或垂直的Vim窗口
这个技巧是由我们的一位读者Yoander在第1部分中分享的。您可以启动vi/m,并拥有多个水平或垂直分割,以在同一个主窗口内编辑不同的文件:
使用vi/m打开两个水平窗口,test1在顶部,test2在底部
vim -o test1 test2

使用vi/m打开两个垂直窗口,test3在左侧,test4在右侧:
vim -O test3 test4

您可以使用通常的vi/m移动方式在窗口之间切换光标(h:
向右,l:
向左,j:
向下,k:
向上):
- Ctrl+w k – 顶部
- Ctrl+w j – 底部
- Ctrl+w l – 左侧
- Ctrl+w h – 右侧
9. 在Vim中更改大写或小写
请注意,此提示仅适用于vim。在下一个示例中,X是一个整数。
- 要将一系列字母更改为大写,将光标置于第一个字母上,然后在ex模式下键入gUX,最后按下键盘上的右箭头。
- 要将X个单词更改为大写,将光标置于单词的开头,然后在ex模式下键入gUXw。
- 要将整行更改为大写,将光标置于行上的任何位置,然后在ex模式下键入gUU。
例如,要将整行小写更改为大写,您应该将光标置于行上的任何位置,并键入gUU:

例如,要将2个大写单词转换为小写,您应该将光标放在第一个单词的开头并键入gu2w:

10. 在Vim插入模式下删除文本
虽然您可以在ex模式下(例如使用dw删除一个单词)一次删除字符或多个单词,但在插入模式下也可以这样做,如下所示:
- Ctrl + h:删除光标当前位置之前的字符。
- Ctrl + w:删除光标当前位置之前的单词。为了正确执行此操作,光标必须放置在要删除的单词之后的空白处。
- Ctrl + u:从光标左侧的字符开始删除当前行。
11. 在Vim中移动或复制现有行
虽然确实可以在ex模式下使用众所周知的dd
、yy
和p
命令分别删除、复制(复制)和粘贴行,但这仅在光标放置在要执行这些操作的位置时才有效。
好消息是,使用复制和移动命令,无论光标当前放置在哪里,您都可以执行相同的操作。
对于下一个示例,我们将使用一首名为“永远”的短诗,作者是特丽·尼科尔·撒灵顿。首先,我们将让Vim显示行号(在命令模式下使用:set nu – 把这个当作一个额外的小技巧)。我们将使用:3copy5(也是在命令模式下)将第3行复制到第5行下面:

现在,撤销最后一次更改(Esc + u – 另一个额外的小技巧!)并键入:1move7来用第1行替换第7行。请注意第2行到第7行是如何上移的,而原来的第1行现在占据了第7行的位置:

12. 在Vim中导航和计数模式匹配
这个小技巧是基于替换命令(在#7提示中,这是本系列第1部分),不同之处在于它不会删除任何内容,因为替换行为被n选项所覆盖,结果是计算指定模式的出现次数:
请确保不要遗漏任何正斜杠!
:%s/pattern//gn
例如,
:%s/libero//gn

要在ex模式下从一个模式的出现移动到下一个,请按n(小写的N)。要移动到前一个实例,请按N。
13. 在指定行打开Vim中的文件
默认情况下,当你启动vi/m时,光标最初放置在上次编辑的最后一行。如果你想打开程序并将光标直接放置在指定的行上,你可以使用以下技巧:
# vim filename +line_number
例如,打开永远.txt并将光标放置在第6行:
# vim forever.txt +6
让我们对这个示例稍作修改。假设我们想要在模式出现的第3次所在行打开文件:
# vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)
让我们更仔细地看看上面的命令做了什么:
- grep -in pattern filename – 显示文件名中模式出现的所有行,每行输出前都带有行号。
- sed -n 3p – 显示前一个管道输出的第3行。
最后,
- 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/m,在指定的行打开程序。
14. 定制Vim环境
如果你使用vi/m来编辑配置文件或编写代码,你可能希望在打开程序时能够显示行
- Vim for Linux Admins: 8 Powerful Tips and Tricks (Part 2)
号,并设置自动缩进,这样当你按下Enter键时,光标会自动放置在正确的位置。此外,你可能还想要自定义一个制表符占据的空格数。
虽然你可以在每次启动vi/m时都这样做,但在~/.vimrc
中设置这些选项会更容易,这样它们就会自动应用:
set number set autoindent set shiftwidth=4 set softtabstop=4 set expandtab
为了进一步自定义您的vi/m环境,您可以参考在线vim文档。
15. 获取通用Vim帮助/使用Vimtutor
如果您在任何时候需要复习您的通用vi/m技能,您可以从命令行启动vimtutor,它将显示完整的vi/m帮助,您可以随时参考,无需打开网络浏览器搜索如何在vi/m中完成特定任务。
vimtutor

请注意,您可以像在vi/m中导航常规文件一样导航或搜索Vimtutor的内容。
总结
在这两篇文章系列中,我分享了一些vi/m技巧和窍门,这些技巧和窍门应该可以帮助您在使用命令行工具编辑文本时更加有效。
I’m sure you must have other ones – so feel free to share them with the rest of the community in the comment form below. As always, questions and comments are also welcome.
Source:
https://www.tecmint.com/how-to-use-vi-and-vim-editor-in-linux/