Vim 让光标停留在换行符上

Vim 让光标停留在换行符上

有没有办法让光标停留在 Vim 中的换行符上,类似于 Emacs 的默认行为?

当你删除行中间的一个字符时,该字符会被删除,光标现在位于其右侧的字符上。但是,如果你删除行尾的一个字符,该字符会被删除,光标现在位于其右侧的字符上左边。我希望它能够位于换行符上,换行符是被删除字符右侧的字符(或根据系统而定的字符)。我还希望能够让光标位于换行符上。

答案1

通过设置即可实现virtualedit。请尝试 eg :set virtualedit=onemore并阅读更多内容,:h 'virtualedit' 注意,这可能会破坏插件或 Vim 中其他测试较少的角落。

如果您还想x在此模式下删除最后一个换行符,您可能能够通过映射x来做一些更聪明的事情,例如

:nnoremap <expr> x col('$')==col('.')?'gJ':'x'

这基本上映射x到一个表达式,该表达式检查光标是否位于行的最后一个字符(换行符)上,如果是,则将其映射到命令,否则将执行gJ正常操作。x

(注意:没有经过非常彻底的测试,可能存在一些极端情况)

相关内容