vim 内で fzf を起動し、選択したファイルを分割ウィンドウで開くにはどうすればよいですか?

vim 内で fzf を起動し、選択したファイルを分割ウィンドウで開くにはどうすればよいですか?

fzf内部を起動して、分割ウィンドウで選択したファイルを開くにはどうすればよいですかvim? プラグインをインストールしたくありません。

私は試した

:!a=$(ls | fzf) && vsplit $a

答え1

fzfコンソールにアクセスする必要があるため、フォアグラウンドコマンドとして実行する必要がありますが、これを行う良い方法は実際にはありません。そしてfzfVim でパイプを介して (ファイル名)からの出力をキャプチャします。したがって、ここでは一時ファイルを使用してファイル名を保存するのが最も簡単な方法です。

簡単な解決策は次のとおりです。

function! SelectFile()
  let tmp = tempname()
  execute '!ls | fzf >'.tmp
  let fname = readfile(tmp)[0]
  silent execute '!rm '.tmp
  execute 'vsplit '.fname
endfunction

次に、次のように使用します。

:call SelectFile()

(または、キー マッピングまたはユーザー コマンドを作成します。)

Vim を使用して内部で:terminal実行することも( でシェルアウトする代わりに) 良いオプションです。fzf:!

いずれにせよ、ここでの本当の最善のアプローチは、優れたVimプラグインの1つを使用することです。フジフそれ自体、そしておそらくより完全な翻訳:これは低レベルのプラグインを基盤として構築されており、役に立つ強力な機能を提供します。

関連情報