@H_404_2@
当我使用
vim时,当我按w或b前进或后退时,我通常不想移动到标点符号.所以我想知道是否有设置或改变此功能的东西?
object.method(args)
我的光标位于“对象”中的[o],然后我想要移动到“方法”中的[m],另一个移动到“args”中的[a].我不希望它落在[.]或[(]上.如果我想要移动到标点符号,我总是用f或F直接跳到它.我从未亲自当我通过单词时,我想转移到标点符号,我才意识到这真的让我烦恼.
@H_404_2@解决方法
我也发现我想要一个更具包容性的运动,但不像W那样包容.特别是,我想要一个只考虑以字母数字字符开头的标记为重要的运动.
所以我想出了以下内容:
" <SPACE> : forward to next word beginning with alphanumeric char " <S-SPACE> : backward to prev word beginning with alphanumeric char " <C-SPACE> : same as above (as <S-SPACE> not available in console Vim " <BS> : back to prev word ending with alphanumeric char function! <SID>GotoPattern(pattern,dir) range let g:_saved_search_reg = @/ let l:flags = "We" if a:dir == "b" let l:flags .= "b" endif for i in range(v:count1) call search(a:pattern,l:flags) endfor let @/ = g:_saved_search_reg endfunction nnoremap <silent> <SPACE> :<C-U>call <SID>GotoPattern('\(^\\|\<\)[A-Za-z0-9_]','f')<CR> vnoremap <silent> <SPACE> :<C-U>let g:_saved_search_reg=@/<CR>gv/\(^\\|\<\)[A-Za-z0-9_]<CR>:<C-U>let @/=g:_saved_search_reg<CR>gv nnoremap <silent> <S-SPACE> :<C-U>call <SID>GotoPattern('\(^\\|\<\)[A-Za-z0-9_]','b')<CR> vnoremap <silent> <S-SPACE> :<C-U>let g:_saved_search_reg=@/<CR>gv?\(^\\|\<\)[A-Za-z0-9_]<CR>:<C-U>let @/=g:_saved_search_reg<CR>gv nnoremap <silent> <BS> :call <SID>GotoPattern('[A-Za-z0-9_]\(\>\\|$\)','b')<CR> vnoremap <silent> <BS> :<C-U>let g:_saved_search_reg=@/<CR>gv?[A-Za-z0-9_]\(\>\\|$\)<CR>:<C-U>let @/=g:_saved_search_reg<CR>gv " Redundant mapping of <C-SPACE> to <S-SPACE> so that " above mappings are available in console Vim. "noremap <C-@> <C-B> if has("gui_running") map <silent> <C-Space> <S-SPACE> else if has("unix") map <Nul> <S-SPACE> else map <C-@> <S-SPACE> endif endif
我已经有很长一段时间了,我发现我使用< SPACE> /< C-SPACE>运动比w和W多得多;它在编码时似乎更有用.当然,您可以将命令映射到您认为有用或更合适的任何键.
@H_404_2@ @H_404_2@@H_404_2@
@H_404_2@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。