学习如何在Linux中使用文本编辑器的必要性是无可争议的,因为每个系统管理员每天都会处理配置(纯文本)文件,并且大多数情况下是通过命令行界面中的一个或多个工具(如nano、vim或emacs)来完成这项工作。
虽然nano对于新用户来说可能更合适,但vim或emacs是经验丰富的用户的首选工具,因为它们具有高级功能。
当然,学习如何使用这些文本编辑器的另一个原因也是不可忽视的,因为你可能会遇到一个仅支持命令行界面的服务器,或者在GUI基础的Linux服务器或桌面上遇到问题,而唯一的资源是命令行来检查并编辑配置文件。
在这篇文章当中,小编将整理15个增强你vim技能的技巧和用法,假设你已经熟悉这个文本编辑器。如果不熟悉vim,请务必先熟悉vim再继续,你可以参考如何使用vim文本编辑器,这是一个非常详细的开始使用vim的指南。
1、在Vim中访问在线帮助
按下F1
键或在ex模式下使用:h
进入在线帮助。你可以通过将光标置于特定部分或主题上,然后按Ctrl+]
(先按Ctrl
键,然后按右方括号)来跳转到该部分或主题。
完成后,按Ctrl+t
返回上一个屏幕。或者,你可以使用:h <topic 或 command>
来查找特定主题或命令。
例如,输入以下命令:
:h x
将显示x (delete)命令的帮助:
再例如:
:h substitute
将显示有关substitute命令的帮助。
2、在Vim编辑器中添加书签
如果你发现自己正在编辑一个大于一个屏幕的文件,你会感谢vim提供的标记功能。你可以将vim中的标记视为书签,一旦将其放置在某处,就可以快速轻松地返回到该位置。
假设你正在编辑一个包含300个字的配置文件,并且因某种原因需要反复在第30行和第150行之间切换。
首先,通过在ex模式下输入:30
来转到第30行,然后返回到命令模式并按ma(先m,然后a)在第30行创建一个名为“a”的标记。然后转到第250行(使用:250
在ex模式下)并按`a
(反引号,然后a)返回到第30行的标记“a”。
你可以使用小写和大写字母来标识vim中的标记(现在重复该过程以在第250行创建一个名为A的标记)
这样你可以使用以下方式查看你的标记
:marks aA
正如你所看到的,每个标记都是由文件上的特定行/列位置引用的,而不仅仅是行。
3、Vim中轻松的代码清理
假设你正在编辑一个shell脚本,并意识到以前的开发人员在缩进方面相当糟糕。让我们看看如何使用几个vim命令来修复它。
首先,将光标放在块的开头,然后按Ctrl+v
(先Ctrl,然后v)来选择可视块。
- 要向左缩进:按
<j
- 要向右缩进:按
<j
然后按.
(点) 命令重复任一缩进。只需按一次键,所选块就会向右或向左移动。
使用.
命令的另一个经典示例是当你需要删除一系列单词时:将光标放在要删除的第一个单词上,然后按dw。
要继续删除下一个单词,只需按.
(比重复多次dw更短且更容易)。
4、在Vim中插入Unicode字符
如果你的键盘布局不允许你轻松地在文件中插入特殊的Unicode字符,或者如果你发现自己所在的服务器的语言设置与你习惯的语言设置不同,则此技巧会派上用场。
为此,请在插入模式下按Ctrl+v
,然后输入字母u
和你想要插入的字符的十六进制数值代码。
你可以自行检查Unicode图表以获取特殊字符及其相应数字代码的列表。以下是简单的几个举例:
Ctrl+v后面跟的数值代码 | 返回值 |
u0040 | @ |
u00B5 | μ |
u20AC | € |
5、在Vim中合并外部命令输出
有时你可能需要将外部命令的输出直接插入正在使用vim编辑的文件中。例如,小编经常在脚本中创建一个名为DIR
的变量来存储脚本所在目录的绝对路径,以便稍后在脚本中使用它。为此,可以使用:
:r! pwd
在ex模式下。因此,当前工作目录被插入。
另一个例子:如果你需要在脚本中的某个位置使用默认网关,可以轻松地将其插入到当前文件中,而无需退出vim,命令如下:
:!r ip route show | grep default | cut -f 3 -d " "
6、在Vim中追加外部文件内容
如果需要将单独文件的内容附加到当前正在编辑的文件中,则语法类似于上一技巧。只需省略感叹号即可开始。例如,复制/etc/passwd的内容:
:r /etc/passwd
当需要修改配置文件但希望保留原始文件以便恢复到“出厂设置”时,你可能会发现这个技巧很有用。
7、在Vim中搜索和替换单词
之前看到一个这样的题目,就是要求打开一个包含随机数据的大文本文件,然后将文本中每个出现的单词“Globe”替换为“Earth”。对于那些熟悉sed的人来说,可能会联想到——在ex模式下,输入:
:%s/old/new/g
其中old是要搜索的模式,new是将替换它的字符串。
所以,对于上述情况下,可以使用:
:%s/Globe/Earth/g
这样就可以完成工作。
那么,你想在进行替换之前得到提示怎么办?其实很简单,只需在上述命令末尾添加一个c即可,命令如下:
:%s/old/new/gc
出现的模式将突出方式显示,并且系统将询问你是否要将其替换为新字符串:
:%s/gacanepa/me/gc
其中:
- y:是
- n:否
- a:全部替换
- q:退出
- l:替换该出现的词并退出
- ^E (Ctrl+E) : 向上滚动一页
- ^Y (Ctrl+Y) : 向下滚动一页
总结
在本文中,小编整理了一些vim提示和技巧,以增强你在Linux系统中的文本编辑技能。当然,vim的使用示例远远不止这些,后面小编也还会陆续介绍一些,大家也可以自行查找相关资料了解。