2012-06-16 3 views
0

Я пытаюсь создать карту для открытия ~/.vimrc, но откройте ~/.vimrc только тогда, когда буфер пуст, иначе разделите и откройте.
Я стараюсь этоvim split, если буфер не пуст

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

Я также проверил, пусто ли имя текущего буфера. –

ответ

8

принять отличный ответ К немного дальше:

Как насчет вытаскивания родового «открытого файла в расколе, если буфер не пустая» функция.

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>) 
+2

+1 Очень хорошая идея. – kev

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 отслеживать изменения счетчика.

Смежные вопросы