转到上一行/下一行的最后一个非空白字符?


10

我喜欢-<C-M>普通模式键,用于转到上一行/下一行的第一个非空白字符。

是否存在用于上一行/下一行的最后一个非空白字符的对应键?

Answers:


13

g_将光标移动到当前行的最后一个非空白字符。从Vim的:help g_

g_          To the last non-blank character of the line and
            [count - 1] lines downward |inclusive|. {not in Vi}

不幸的是,我认为您必须移动到上一行/下一行的非空白字符的唯一选项分别是kg_jg_或使用计数向下移动。

但是,将它们映射到更简单的对象很容易:

nnoremap <F3> kg_
nnoremap <F4> jg_

1
另请注意,2g_如果您要转到下一行的最后一个非空白字符,这也将起作用。但是,这不能用于上一行。这样做的好处2g_是可以与.
EvergreenTree

1
动作(如g_)不能通过重复.。通常,只有更改缓冲区状态的操作才能重复。
tommcdo

但是,当与操作员结合使用时,重复操作是可行的。也许这就是您所指的
tommcdo

啊,我没有意识到动作是不可重复的。我说些什么之前应该先看一下文档。
EvergreenTree

0

如果您是指上一行/下一行的下一个非空格字符(垂直移动),请尝试:

map <C-k> :call search('\%' . virtcol('.') . 'v\S', 'bW')<CR>
map <C-j> :call search('\%' . virtcol('.') . 'v\S', 'wW')<CR>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.