Vim:如何将左光标移动限制为该行的第一个非空白字符?

时间:2017-12-04 17:22:35

标签: vim padding vi

是否存在将光标移动限制在该行最左边的非空白字符的vim设置?

我正在编写一个向缓冲区输出一些信息的插件。所有文本左边都会有很多空格填充,但所有行都将缩进相同的内容。我想阻止用户在没有文本的填充区域上移动光标。

例如:

|    Lorem ipsum
|    Lorem ipsum
|    Lorem ipsum
|    Lorem ipsum

' |'表示vim边框,边框和文本之间是空格。永远不要在这些空格上移动光标,并且应该停在' L'。

1 个答案:

答案 0 :(得分:1)

您可以使用CursorMoved:normal!

将光标强制到该行的开头
augroup BossyMotions
  autocmd!
  autocmd CursorMoved <buffer> if strpart(getline('.'), 0, col('.')) =~ '^\s*$' | execute 'normal! ^' | endif
augroup END

如需更多帮助,请参阅:

:h :normal
:h :autocmd
:h :autocmd-buflocal
:h :augroup
:h CursorMoved
:h :exe
:h strpart()