我尝试为open~ / .vimrc创建一个地图,但只在缓冲区为空时打开〜/ .vimrc,否则拆分并打开。
我试试这个
fun! BufferIsEmpty() "{{{
if line('$') == 1 && getline(1) == ''
return 1
else
return 0
endif
endf "}}}
fun! NotEmptySplit() "{{{
if !BufferIsEmpty()
sp
endif
return
endf
command! -nargs=0 NotEmptySplit call NotEmptySplit()
nnoremap <silent><leader>ve :NotEmptySplit <bar> ~/.vimrc<CR>
但我收到此错误
E488: Trailing characters
答案 0 :(得分:10)
进一步采取kev的优秀答案:
如果在缓冲区不为空的情况下拉出一个通用的'open file in split if。
fu! OpenInSplitIfBufferDirty(file)
if line('$') == 1 && getline(1) == ''
exec 'e' a:file
else
exec 'sp' a:file
endif
endfu
nnoremap <silent> <leader>ve :call OpenInSplitIfBufferDirty($MYVIMRC)<cr>
command -nargs=1 -complete=file -bar CleverOpen :call OpenInSplitIfBufferDirty(<q-args>)
答案 1 :(得分:4)
添加-bar
选项将解决E488
错误。
command! -bar -nargs=0 NotEmptySplit call NotEmptySplit()
nnoremap <silent><leader>ve :NotEmptySplit <BAR> ~/.vimrc<CR>
但它会从E488
引发另一个<BAR> ~/.vimrc<CR>
错误。
我正在尝试重构您的代码:
fun! OpenVimrc()
if line('$') == 1 && getline(1) == ''
e $MYVIMRC
else
sp $MYVIMRC
endif
endf
nnoremap <silent><leader>ve :call OpenVimrc()<CR>
这是一个名为b:changedtick
的变量,用于跟踪更改计数器。