我可以改变vim的光标行为吗?


11

我已经使用vim作为辅助编辑器已有几年了,但是由于各种原因,即使主编辑器可用,我也越来越多地使用它。一直困扰着我的问题之一vim,是它处理游标放置的方式,这使我无法更多地使用它。游标只能位于一个字符上,而不能像1984年以来创建的任何编辑器一样位于字符之间

仅举一个为什么会出现问题的示例,如果我想删除一行的最后一个单词,请点击$以转到行的末尾,然后db向后删除。这使得字符删除,因为$没有真正转到线的末端,它去到该行的最后一个字符,并db删除仅是什么之前,当前字符。问题不在于我必须输入一个额外的字符,而是要做简单的事情所涉及的额外思想,这使我的注意力从我实际想要完成的事情上转移了。

在我看来,更现代的想法将光标放置在各个方面都比较优越,我想切换vim为使用该方法。我确定有些铁杆vim粉丝会不同意我的观点,但是由于vim的优越性的标准论据之一是其无限的可配置性:

  • 在这种情况下可以交付吗?
  • 可以vim将光标放置在字符之间吗?

2
听起来好像您正在寻找Insert模式或缺少normal模式要点。我会做$daw$bdw删除在正常模式下一行的最后一句话。在Insert模式下我会做A<Ctrl-w>
2012年

3
记录下来,由于对“字符之间的网络世界”这一想法感到恐惧,删除当前行上最后一个单词的正确键序是$bD
Alan Curry

1
使用鼠标并不理想,但是当您不得不停下来思考如何做自己想做的事情时,效率就会大大降低。珍贵的真实事物不是四处走动,而是专注。当您失去焦点时,您损失的时间将远远超过几秒钟。
iconoclast 2012年

2
从到目前为止的评论看来,这个问题的答案似乎是“不,这种光标移动模型不可撤销地嵌入在vim的设计中,不能更改。” 那是对的吗?
iconoclast 2012年

2
@iconoclast这也是我的结论。据我所知,在vi或vim中不可能统一对待一行上的所有字符,第一个或最后一个字符总是有例外。
吉尔(Gilles)'所以

Answers:


5

您可以:set virtualedit+=onemore,它使您可以越过最后一个字符。对你来说不幸的是,$仍然走到了最后一个角色。您必须将光标移过去。另一方面,您可以使用g$,通常转到换行的屏幕行的最后一个字符;在onemore模式下,它也刚好经过非换行的最后一个字符(或换行的最后一个屏幕行)。

:h 'virtualedit' 表示此选项会使脚本混乱,但我不知道现实中的风险有多大。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.