将光标移动到“活动”的开始/结束位置。在C线

时间:2015-05-20 11:09:17

标签: vim

我已将<Home>映射到^,以便将光标移动到该行的第一个非空字符(跳过缩进)。

我想对<End>执行相同操作,但我也想跳过允许我轻松移动代码的活动部分的注释:

// A line of C:
      if (foo == bar) {        // Comment
^     ^               ^                 ^
|    '^' or <Home>     <End>           '$' or <C-End>   
|
'0' or <C-Home>   

这是<Home>

的诀窍
noremap <Home> ^
inoremap <silent> <Home> <C-c>^i
inoremap <C-Home>   <C-c>0i
nnoremap <C-Home>   0

" Use `$` to move physically at the end of the line 
" (Virtualedit must be enabled)
nmap <C-End>    $

现在我正在寻找<End>的解决方案。

有什么想法吗?

P.S。随意改变我的问题的标题,我不知道怎么用更好的方式说出来......

1 个答案:

答案 0 :(得分:1)

对于普通模式和插入模式移动,您可以通过可选搜索注释的开头跟进$跳转到最后。如果不匹配,使用search()可以防止发出哔哔声和错误消息,并且不会破坏您当前的搜索:

nnoremap <silent> <End> $:call search('\S\s*/[/*]', 'bcW')<CR>