等效于Python文件的%移动
发布于 2021-01-29 15:58:27
对于带有{}
表示块的语言,vim具有全能%
键。python代码的等效运动是什么?或至少以相同的缩进量移至下一行/上一行。
关注者
0
被浏览
146
1 个回答
-
该VIM维基建议绑定,例如:
nnoremap <M-,> k:call search('^'. matchstr(getline(line('.')+1), '\(\s*\)') .'\S', 'b')<CR>^ nnoremap <M-.> :call search('^'. matchstr(getline(line('.')), '\(\s*\)') .'\S')<CR>^
以及提供更全面的解决方案:
" Jump to the next or previous line that has the same level or a lower " level of indentation than the current line. " " exclusive (bool): true: Motion is exclusive " false: Motion is inclusive " fwd (bool): true: Go to next line " false: Go to previous line " lowerlevel (bool): true: Go to line with lower indentation level " false: Go to line with the same indentation level " skipblanks (bool): true: Skip blank lines " false: Don't skip blank lines function! NextIndent(exclusive, fwd, lowerlevel, skipblanks) let line = line('.') let column = col('.') let lastline = line('$') let indent = indent(line) let stepvalue = a:fwd ? 1 : -1 while (line > 0 && line <= lastline) let line = line + stepvalue if ( ! a:lowerlevel && indent(line) == indent || \ a:lowerlevel && indent(line) < indent) if (! a:skipblanks || strlen(getline(line)) > 0) if (a:exclusive) let line = line - stepvalue endif exe line exe "normal " column . "|" return endif endif endwhile endfunction " Moving back and forth between lines of same or lower indentation. nnoremap <silent> [l :call NextIndent(0, 0, 0, 1)<CR> nnoremap <silent> ]l :call NextIndent(0, 1, 0, 1)<CR> nnoremap <silent> [L :call NextIndent(0, 0, 1, 1)<CR> nnoremap <silent> ]L :call NextIndent(0, 1, 1, 1)<CR> vnoremap <silent> [l <Esc>:call NextIndent(0, 0, 0, 1)<CR>m'gv'' vnoremap <silent> ]l <Esc>:call NextIndent(0, 1, 0, 1)<CR>m'gv'' vnoremap <silent> [L <Esc>:call NextIndent(0, 0, 1, 1)<CR>m'gv'' vnoremap <silent> ]L <Esc>:call NextIndent(0, 1, 1, 1)<CR>m'gv'' onoremap <silent> [l :call NextIndent(0, 0, 0, 1)<CR> onoremap <silent> ]l :call NextIndent(0, 1, 0, 1)<CR> onoremap <silent> [L :call NextIndent(1, 0, 1, 1)<CR> onoremap <silent> ]L :call NextIndent(1, 1, 1, 1)<CR>
用途:
[l
并]l
跳到与当前行具有相同缩进级别的上一行或下一行。[L
并]L
跳到缩进级别低于当前行的上一行或下一行。