web-dev-qa-db-ja.com

すでに開いているウィンドウでカーソルの下のファイルを開くvimショートカット

Vimでは、gfコマンドを使用して カーソルの下のファイルを開く を実行できます。

また、<c-w> fを押すと、新しい分割ウィンドウでそのファイルを簡単に開くことができます。これは本当に素晴らしい時間節約機能です。

しかし、(新しいウィンドウを作成せずに)既に開いている分割ウィンドウでファイルを開く方法がわかりません。

12
psibar

私はトリックをするためにすべてのピースを集めました。最善の方法は、すべてのコマンドのカスタムマッピングを作成することです。

_ map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p
_

説明:

  • _map <F8>_は "F8"に続くコマンドをマッピングします
  • let mycurf=expand("<cfile>")はカーソルの下のファイル名を取得し、mycurfに保存します
  • _<c-w>w_フォーカスを次に開いている分割ウィンドウに変更します
  • execute("e ".mycurf)mycurfに保存されたファイルを開きます
  • 最後に_<c-w>p_は、フォーカスを前のウィンドウ(実際に元のウィンドウ)に変更します
10
psibar

それは簡単にはできません。 [count]の前の<C-w>fは、'path'で一致するファイルを開くことを指定しますが、開くnot既存のウィンドウを選択します。 <C-w>wコマンドの場合のみ、[count]は「既存のウィンドウ番号に移動」を意味します。

この機能を使用するには、カスタムマッピングを作成する必要があります。

  • ファイルを取得し、[count]ウィンドウに移動してgfコマンドをエミュレートする、または
  • 現在のバッファを[count]ウィンドウに複製し、そこでgfを実行します
1
Ingo Karkat

私は同じVImの機能を検索し、魅力のように機能するこのソリューションを見つけました:

map <F8> :vertical wincmd f<CR>

ソースページ

1
waldauf

これは私のために働きました:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
0
sirex