基本上我对PSR-2代码合规性有以下设置:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set smarttab
PSR-2要求缩进为4个空格。这很好,但我习惯使用真正的标签而不是空格,所以如果我在一行的开头,我向右移动,而不是移动到第一个缩进字符,它一次移动一个空间。
有没有办法让vim以同样的方式对待这些领先的空间,也就是说,跳过"跳跃"在正常模式和插入模式下导航到第一个非空格字符?
我知道我可以使用^
将光标放在第一个非空白字符上,但我并不习惯这样,而且它不像简单导航那么方便。< / p>
答案 0 :(得分:1)
将以下内容放入vimrc
function! s:super_left()
return getline('.')[:col('.')] =~ '^\s\+$' ? 'w' : 'l'
endfunction
augroup SuperLeft
au!
autocmd FileType php nnoremap <expr> l <sid>super_left()
augroup END
答案 1 :(得分:1)
我认为你可以更好地习惯使用vims更强大的移动命令,例如^
。
话虽如此,这是你可以达到你想要的一种方式。
nnoremap <right> :silent call SkipSpace()<cr>
function! SkipSpace()
let curcol = col('.')
execute "normal ^"
let hatcol = col('.')
if curcol >= hatcol
" move one space right
let newcol = curcol + 1
elseif curcol + 4 > hatcol
" move to the start of the next word if it is less than 4 spaces away
let newcol = hatcol
else
" move 4 spaces right
let newcol = curcol + 4
endif
execute "normal " . newcol . "|"
endfunction
P.S。如需一点乐趣,请查看:help |