介绍了在命令行编辑中使用vi模式。作为大型开源社区(更具体地说是Fedora项目)的参与者,我有机会与许多人会面并讨论各种有趣的技术话题。我最喜欢的话题是“命令行”或shell,因为看人们如何使用shell可以让你洞察他们的想法,他们喜欢什么样的工作流程,以及在某种程度上是什么激发了他们的灵感。随着许多开发人员和运维人员在互联网上公开分享他们的“点文件”(他们的shell配置文件的常用俚语),这对于每个人来说都是一个有趣的合作机会,无论是对命令行有丰富经验的人,还是学习技巧和技巧并与他人分享快捷方式和生产力技巧。今天就来给大家介绍一下shell中的vi模式。在庞大的计算和操作系统生态系统中有许多外壳。然而,在Linux世界中,bash已成为事实上的标准,并且在撰写本文时,它是所有主要Linux发行版的默认shell。所以这就是我所说的外壳。请注意,bash在其他类UNIX操作系统上也是一个相当流行的选项,因此它可能与您正在使用的没有太大区别(对于Windows用户,cygwin很好)。在探索shell时,要做的第一件事是在其中输入命令并获取输出,如下所示:$echo"HelloWorld!"你好世界!这是一个常见的练习,可能每个人都做过。没有接触过的人和新手可能没有意识到,bashshell的默认输入模式是Emacs模式,这意味着在命令行中使用的所有行编辑功能都会使用Emacs风格的“键盘快捷键”。(行编辑功能实际上是由GNUReadline执行的。)例如,如果您键入echo"HelloWrld!"并意识到你想快速跳回到一个单词(以空格分隔)来更正拼写错误而不按按住左箭头键,然后你可以同时按Alt+b,光标将跳回到W。$echo"HelloWrld!"^光标在这里。这只需使用shell用户可用的众多Emacs快捷键组合之一即可完成。更像是复制文本、粘贴文本、删除文本和使用快捷方式编辑文本。使用复杂的快捷键组合并记住它可能看起来很愚蠢,但是当使用较长的命令或从shell历史调用命令并想要再次编辑执行时,它们会非常强大。虽然Emacs的键绑定都很好,但如果您熟悉Emacs编辑器或发现它们易于使用,仍然有一些人对“vi风格”键绑定感觉更舒服,因为他们经常使用vi编辑器(通常是vim或nvim)。bashshell(再次通过GNUReadline)可以为我们提供这个功能。要启用它,请执行命令$set-ovi。就像变魔术一样,您现在处于vi模式,现在可以使用vi风格的键绑定轻松编辑以复制文本、删除文本以及跳转到文本行中的不同位置。就功能而言,这与Emacs模式没有太大区别,但它在您与shell交互以执行操作的方式上确实存在一些差异,根据您的喜好,它是一个很好的选择。让我们看看前面的例子,但是在这种情况下,一旦你在shell中进入vi模式,你就处于INSERT模式,这意味着你可以像以前一样输入命令,现在按下Esc键,你将进入NORMAL模式,你可以自由浏览和修改文本。查看前面的示例,如果您键入echo“HelloWrld!”,并意识到您想要跳回一个单词(同样是空格分隔的单词)来修复该拼写错误,那么您可以从INSERT模式按Esc更改为NORMAL模式。然后您可以键入B(即Shift+b),光标将像以前一样回到前面。(有关vi模式的更多信息,请参见此处。):$echo"HelloWrld!"^光标在这里。现在,对于vi/vim/nvim用户,您会惊喜地发现您始终可以使用相同的快捷键,而不仅仅是在编辑器中编写代码或文档时。如果您从未听说过这些并且想了解更多,那么我可能建议您查看这个交互式vim教程,看看是否有您不知道的有关vi风格编辑的内容。如果您更喜欢以这种方式与shell交互,您可以通过在主目录中的~/.bashrc文件底部添加以下行来永久设置它。set-ovi对于emacs模式用户,希望这能让您快速愉快地查看shell的“另一面”。在我总结之前,我认为每个人都应该使用任何编辑器和shell行编辑模式来提高他们的工作效率,如果您使用vi模式并且本文为您打开了新的一页,那么恭喜您!现在只是变得更有效率。
