neo防止使用B或B跳转到vim中的前一行

  • 本文关键字:一行 vim neo vim neovim
  • 更新时间 :
  • 英文 :


我在SO上找到了以下代码,它非常适合使用E跳到单词并像这样停在行尾:nnoremap <expr> E getline('.')[col('.') - 1:] =~# 'sS' ? 'E' : (col('.') + 1 == col('g_') ? 'E' : '$')
但我最近才开始使用vimscripts,无法使用b/b进行反向操作。我试图做这样的事情,但没有成功,因为它没有停在线路的开头:

nnoremap <expr> B getline('.')[col('.') + 1:] =~# 'Ss' ? 'B' : (col('.') - 1 == col('^') ? 'B' : '^')

我建议如下:

nnoremap <expr> B strpart(getline('.'), 0, col('.') - 1) =~ '^s*$' ? '0' : 'B'

strpart(getline('.'), 0, col('.') - 1)拾取当前光标位置左侧的子字符串。如果这是空的或仅由空白组成(即,当B通常跳到前一行时(,则B被映射到0,即,它跳到该行的第一个字符而不跳到上一行。否则,B的行为与原始B类似。

最新更新