反模式Vim

当您处于繁忙状态时,Vim会认真地加快编辑速度,无论是编写代码,诗歌还是散文。 但是由于学习曲线对于文本编辑器来说太陡峭,因此从您刚掌握编辑器起就很容易养成不良习惯。 Vim极大地加快了您的工作速度,以至于很难消除它,因为您甚至可能不会注意到它。 但这是值得的。 我将列出一些最常见的反模式。

一线移动


如果您需要跳多行,那么用jk键沿一条线移动效率不高。 在Vim中有很多垂直移动的方法 。 我发现最有用的两个是段落和屏幕跳转。 这取决于您需要移动多远和精确到什么程度。

  • { -转到上一段或代码段的开头。
  • } -转到下一段或代码块的末尾。
  • Ctrl+F前进一个屏幕。
  • Ctrl+B返回上一屏。

如果您确切知道需要去的地方,则可以在搜索中使用导航:使用/向前搜索,然后使用-后退?

返回上一个位置也总是很有用的,用两个引号或gi很容易做到:返回输入文本的最后一个位置。 如果需要,您甚至可以在使用g;输入文本的所有位置之间导航g;g,

单字符移动


同样,当我们有tf时,用hl键一次移动一个字符通常是浪费时间:

  • t<char> - 向前移动直到出现下一个字符。
  • f<char> - 向前移动出现下一个字符。
  • T<char> - 返回到上一个字符。
  • F<char> - 向后移动一个字符。

用键wWbBeE遍历单词也更好。 搜索导航在这里很有用,请不要忘记您可以将文本向前或向后复制,删除或更改为搜索结果:
y/search<Enter>
y?search<Enter>
d/search<Enter>
d?search<Enter>
c/search<Enter>
c?search<Enter>

在光标下搜索单词


不要打扰输入或复制/粘贴,只需按*# 。 当您掌握了这些热键后,工作变得更快了,这真是令人惊讶。

删除并粘贴


无需删除文本即可通过插入模式来替换它:

d2wi

更快更准确地使用c键:

c2w

因此,整个操作变得可以用点( . )重复。

使用方向键


Vim允许您使用箭头键在正常模式和插入模式下移动,但是如果您习惯于使用hjkl进行导航,则箭头似乎已经很笨拙,因为在整个Vim会话中,手指都位于键盘中央 ,因此很方便触摸打字。 Home键和End键类似:尽管它们在大多数编辑器中都可以使用,但是当^$的等效项更接近时,没有特别的理由使用它们。

因此,建议通过至少暂时禁用箭头键来使自己退出箭头键:

noremap <Up> <nop>
noremap <Down> <nop>
noremap <Left> <nop>
noremap <Right> <nop>


使用中央键进行盲输入不仅可以提高速度,还可以使您感觉更好,因为您的手腕位于键盘的前面,并且不会移动太远,并且可以帮助某些人保护自己免受隧道综合症的侵害

在插入模式下移动


在中心线盲打的另一个优点是,您摆脱了在插入模式下移动的习惯:为此设计了普通模式。 一旦您需要移动到某个地方,就可以切换到普通模式并更有效地移动。 它还有助于使粘贴操作更具原子性,因此更便于重复。

按Esc


比尔·乔伊(Bill Joy)设计vi时,现代键盘上的Escape键距离中间行远得多。 通常不需要按Escape键: Ctrl+[更近,更方便,您将很快改变习惯。 作为一种选择,您可以考虑匹配Esc操作系统中相当无用的Caps Lock键或什至不寻常的组合,例如jj 。 尽管这是一个激进的建议,但对许多人来说效果很好:

inoremap jj <Esc>

移至行首或行尾,然后插入


只需使用IA 此外,它们使操作可重复用于可能需要相同操作的其他行。

进入插入模式,然后创建新行


使用oO分别创建一个较低和较高的新行,并同时在其上输入插入模式。

进入插入模式以删除文本


这是一个非常明显的矛盾。 而是删除文本,方法是将其移入文本,然后将d与适当的运动或文本对象一起使用。 同样,此操作是可重复的,表示您没有保留空格。 通常,如果您在Vim中按住一个键,可能有一种更快的方法。

重复命令或搜索


只需输入@:作为命令,或键入n / N进行搜索; Vim不会忘记上一次搜索。 如果这不是最后一个命令或搜索,但肯定在历史记录中,请输入q:q/ ,在列表中找到它,然后按Enter。

替代品


输入&重复最后一次替换的当前行。 您可以通过输入g&在所有行上重复该操作。

宏调用


只需输入@@

实际上,这些只是提高编辑器工作速度和整体效率而无需安装插件或大量重新分配键的几种常用方法。 有关Vim的提示,另请参见Wiki ,还有其他一些非常有用的示例。

Source: https://habr.com/ru/post/zh-CN442110/


All Articles