2011-01-05 15 views
3

私はMacVimを使用していますが、通常は多数のタブが開いています。私は開いているファイルのいずれかに印を落として、それらの間をジャンプすることができるようにしたいと思います。 mKとK work great when the mark is in the same tab but I've got to use gt to find the tab and then Kマーカーを見つけるには...より良い方法が必要ですか?vimのさまざまなタブ内のマーカーにジャンプするにはどうすればよいですか?

+5

これはラインの外かもしれませんが、私は面白い感じ[この](http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers/103590#103590)答えを持っていますここに適用されます。 –

+0

はい、私はあなたが正しいと思います。以前のエディタでvimを作成しようとしていて、実際にはタブでやり直してみるのが良いでしょう。 –

答えて

3

ここでは、あなたの必要性に答える迅速かつ汚れたハックがあります。

let s:marks = {} 

function! s:Mark(name) 
    echomsg "new mark: " a:name 
    " todo: record the winnr/bufnr as well 
    let s:marks[a:name] = tabpagenr() 
    exe 'normal! m'.a:name 
endfunction 

function! s:Jump(how, name) 
    if has_key(s:marks, a:name) 
    let nr = s:marks[a:name] 
    tabfirst 
    let first = tabpagenr() 
    while tabpagenr() != nr 
     tabnext 
     if tabpagenr() == first 
break 
     endif 
    endwhile 
    if tabpagenr() == nr 
     exe 'normal! '.a:how.a:name 
     " nominal termination 
     return 
    endif 
    endif 
    echoerr "tab-mark " . a:name . " not set" 
endfunction 

nnoremap m :call <sid>Mark(nr2char(getchar()))<cr> 
nnoremap ` :call <sid>Jump('`', nr2char(getchar()))<cr> 
nnoremap ' :call <sid>Jump("'", nr2char(getchar()))<cr> 

問題:

  • マーク通常、各バッファのために異なっています。ここでは、すべてのマークがグローバルです。代わりに、\m\'、ang \*backtick*

  • にマッピングを提供する必要があります。これは分割ウィンドウを考慮しません。

関連する問題