有没有办法让光标停留在 Vim 中的换行符上,类似于 Emacs 的默认行为?
当你删除行中间的一个字符时,该字符会被删除,光标现在位于其右侧的字符上。但是,如果你删除行尾的一个字符,该字符会被删除,光标现在位于其右侧的字符上左边。我希望它能够位于换行符上,换行符是被删除字符右侧的字符(或根据系统而定的字符)。我还希望能够让光标位于换行符上。
答案1
通过设置即可实现virtualedit
。请尝试 eg
:set virtualedit=onemore
并阅读更多内容,:h 'virtualedit'
注意,这可能会破坏插件或 Vim 中其他测试较少的角落。
如果您还想x
在此模式下删除最后一个换行符,您可能能够通过映射x
来做一些更聪明的事情,例如
:nnoremap <expr> x col('$')==col('.')?'gJ':'x'
这基本上映射x
到一个表达式,该表达式检查光标是否位于行的最后一个字符(换行符)上,如果是,则将其映射到命令,否则将执行gJ
正常操作。x
(注意:没有经过非常彻底的测试,可能存在一些极端情况)