vim ショートカットは、開いたウィンドウでカーソルの下のファイルを開きます。

vim ショートカットは、開いたウィンドウでカーソルの下のファイルを開きます。

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

ワンクリックで新しいペインでファイルを簡単に開くこともできます<c-w> f。これはとても素敵で時間を節約する機能です。

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

答え1

私はこれを行うためにすべての作品を一つにまとめました。最善の方法は、すべてのコマンドに対してカスタムマッピングを作成することです。

 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フォーカスを前のウィンドウ(実際に出てきたウィンドウ)に変更します。

答え2

同じVIm関数を検索してこのソリューションを見つけましたが、本当に魅力的です。

map <F8> :vertical wincmd f<CR>

ソースページ

答え3

これは私にとって効果的です。

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

nmap ,f :call OpenFileInPrevWindow()<CR>

答え4

2013年の上記の答えに本当に迷惑ですが、そうではありません。辞める私が興味を持っている状況で安定して動作し、それを処理するためにもう少し強力な機能を作成します。具体的にはgF(例:「行番号に移動」機能を含む)は、次のようになります。

function! gfriend#goto_cWORD(winmotion)
  let cword = expand("<cWORD>")
  let st = match(cword, '\v\f+:\d+')
  let end = matchend(cword, '\v\f+:\d+')

  if end !=# -1
    let cword = cword[st:end - 1]
  endif

  let bits = split(cword, ':')

  let starting_window = nvim_win_get_number(0)

  " If there's no previous window, create a new one
  wincmd p
  if nvim_win_get_number(0) ==# starting_window
    execute(a:winmotion." ".bits[0])
  else
    execute("e ".bits[0])
  endif

  if bits[1]
    execute(bits[1])
  endif
endfunction

使い方はこんな感じです。

nmap <silent> <Leader>gF \
   :<C-u>call gfriend#goto_cWORD(winwidth(0) >=# 180 ? 'vsp' : 'sp')<CR>

(小さい)内容を投稿しました。GitHubに行く、必要に応じてそこからプラグインとしてインストールできます。

Plug 'ELLIOTTCABLE/vim-gfriend'

関連情報