许多VIM命令背后是否有某种模式?

6

我需要为一个集成开发环境添加VIM模式。我只是基本的编辑功能都没怎么用过VIM,现在被其复杂的命令结构所压倒。

是否有一种将移动次数和插入/删除命令组合的总体结构?我感觉眼花缭乱,无从下手。

4个回答

18

显然在键盘上,hjkl之间存在一个手指位置模式。

^移动到一行的开头,$移动到一行的末尾,这是基于常用正则表达式语法的模式化。

Ctrl-FCtrl-B向前和向后翻页,这非常直观。

i表示在光标前插入,a表示在光标后追加。同样地,
I表示在行首插入,A表示在行末追加。

>表示增加缩进,<表示减少缩进,这也很好理解。

但总体而言,其他大部分命令都被安排在剩下的按键上了。很难找到字母表和编辑器命令之间的直观映射。

重复计数总是在执行命令之前输入,并且大多数情况下会重复执行那个命令,但在某些情况下会执行类似但巧妙的操作。

我认为不让自己为vi疯狂的秘诀是从只使用少量命令开始。我有很多同事只会做以下几个操作:

  • 使用箭头键移动光标(你不必使用hjkl);
  • 使用i插入,使用Del删除(你不必使用x);
  • 使用dd删除整行
  • 使用Esc退出输入模式
  • 使用:x(退出并保存)或q!(强制退出,放弃更改)离开vi
因为我更聪明,我知道并使用的额外命令有:
  • 使用gg返回文件顶部,G返回底部。
    我可以用行号加G来到达指定的行
  • 使用y(复制)复制一行,使用p(粘贴)将其粘贴
  • 使用cw更改一个单词,使用C更改整行
  • 使用dw删除一个单词,使用D删除整行
  • 我有时会使用.来重复上一个命令,或者使用u(撤销)如果我搞砸了。

当你需要使用其他命令时,你可以根据需要逐个自学。


10

2
我认为相对于其他编辑器,更能定义VIM的特点是其广泛的运动命令。完全使用VIM的第一件事是尽可能少地使用箭头键,并将文本视为“块”,如“句子”、“标记”、“单词”、“括号组”。
例如您有function foo($bar, $fooz),您可以通过将光标放在括号内任何位置并按下ci)(助记符:更改内部括号)来更改参数。其他命令也适用于相同的模式:复制(y)、删除(d)等。
我知道这并不能解释整个“VIM哲学”,但将正常模式命令与大量运动修饰符结合起来才是真正让我看到光明的地方。

0

有很多好的和有趣的教程。一个例子是

http://blog.interlinked.org/tutorials/vim_tutorial.html

大多数人给你的广泛结构是:

  1. 有两种主要编辑模式 - 命令模式和插入模式。您可以使用键从插入模式切换到命令模式。
  2. 您可以通过键入单个键或一系列键在命令模式下执行命令。
  3. 命令可以帮助您实现各种事情 删除行 - dd 复制行 - yy 在当前行下粘贴行 - p 在当前行上方粘贴行 - P(等等)

    命令模式中的大多数命令都可以预先加上“计数”来指示命令必须执行的次数。例如,3dd会删除三行。

    命令模式中的一组命令可让您进入插入模式。解释如下。

  4. 有不同的方法可以从命令模式进入插入模式。其中最突出的是(i-在光标处插入,I-在行首插入,o-在下面插入一行,O-在上面插入一行,a-附加,A-在行尾附加。

请参阅快速参考资料

http://www.andy-roberts.net/misc/vim/vim.pdf

将帮助您理解“count”的相关性


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接