我刚刚切换到 Mac 并开始使用 sublimetext 2 进行编码,因为它具有命令模式和 textmate 的舒适性。
当我在 Windows 上时,电子文本编辑器也具有这两个特性,但是一旦激活它的命令模式,光标就会始终位于字符之间,呈闪烁的条形|
,而不是始终是字母下划线的那种。
我对下划线类型感到很恼火,例如,在命令模式下我按下 $,它应该直接到达行尾以便我在该行添加更多内容,但它却到达了行的最后一个字符,如果我点击i
进入插入模式,现在栏光标在最后一个字符的左边,我必须按右箭头才能到达行的最后一个位置。
我相信 vim 专家会告诉我这是设计问题还是其他什么,谢谢,但我只想要一个解决方案,我只想在命令模式或可视模式下使用条形光标。现在我甚至找不到任何设置来更改它。那么,有人碰巧遇到过同样的问题并找到了改变它的方法吗?
答案1
Vim 的光标始终在字符单元。正如您所猜测的,这是设计使然。它实际上无法更改,即使作为一种选择,因为 Vim 的很多行为都取决于该特性。最好的方法是接受它并相应地调整您的编辑习惯。
例如,要在一行结束后添加一个字符,请键入A
。
话虽如此,但有一个设置可能会对你有所帮助。Vim 7 中添加了“virtualedit”选项的新设置:onemore
。这允许光标移动到行尾后的一个位置,这样你就可以越过行尾并键入i
以在行尾插入一个字符。请参阅
:help new-onemore
:help 'virtualedit'
但是,该$
命令仍然会移动到行的实际末尾,因此您可能也希望使用这个映射:
:nnoremap $ $l
最后一个字符是小写的 L。
答案2
无需成为“vim 大师”就能告诉你,你只需要学习 Vim 的方法。无论如何,这就是你每次拿起新工具时需要做的事情。不是吗?
如果您不喜欢 Vim 的默认行为,为什么要忍受(相对)痛苦来启用 Sublime Text 2 的“复古模式”?此功能是 Vim 用户的诱饵,可以引诱他们尝试 ST2,而不仅仅是另一种奇特的使用方式。
Vim 的强大功能部分源自其设计精良的命令、动作和文本对象。如果你不想学习如何使用这些东西,那么模仿它的意义何在?
为了解决您使用$i<right>
进入插入模式的紧急问题后行尾:正确的做法是输入A
。
进入插入模式的正确方法后一个字符就是输入一个字符a
。
从这一点以及你以前的知识i
,$
我想你可以找到进入插入模式的正确方法前一行的第一个字符。
这就是 Vim 和 Sublime Text 2 的复古模式的工作原理。下划线(在复古模式中)和矩形(在 vim 中)光标是在一个字符,一切都遵循这个基本规则。如果你决定用闪烁的竖线替换这个光标,ST2/vintage/vim 仍会认为光标是在同一个字符,但其视觉状态会有所不同。我认为这种情况不可行。
所以是的,如果您想使用 Vim(或替代品),请学习 Vim。
学习其基础知识(以及 ST2 经典模式的一些限制性基础知识)的最佳方法是打开 Terminal.app 并启动vimtutor
。尝试一下,多做几次,你就不会再被 Vim 的怪癖所困扰了。
并且可能在此过程中放弃 ST2。