vim에서 fzf를 시작하고 분할 창에서 선택한 파일을 여는 방법은 무엇입니까?

vim에서 fzf를 시작하고 분할 창에서 선택한 파일을 여는 방법은 무엇입니까?

분할 창에서 선택한 파일을 시작 fzf하고 여는 방법은 무엇입니까? vim플러그인을 설치하고 싶지 않습니다.

나는 노력했다

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

답변1

콘솔에 액세스해야 하기 때문에 fzf콘솔을 포그라운드 명령으로 실행해야 하는데 실제로는 이를 수행하는 좋은 방법이 없습니다.그리고fzf파이프를 통해 Vim에서 (파일 이름)의 출력을 캡처합니다. 따라서 임시 파일을 사용하여 파일 이름을 저장하는 것이 여기서 가장 쉬운 방법입니다.

간단한 해결책은 다음과 같습니다.

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

그런 다음 다음 명령과 함께 사용하십시오.

:call SelectFile()

(또는 이에 대한 키맵이나 사용자 명령을 만듭니다.)

Shell로 종료하는 대신 Vim을 사용하여 :terminal실행하는 것도 좋은 선택입니다.fzf:!

어쨌든 가장 좋은 방법은 좋은 Vim 플러그인이나 Vim에 포함된 플러그인을 사용하는 것입니다.후지브그 자체가 더 완전할 수도 있습니다.fzf.vim이는 낮은 수준의 플러그인을 기반으로 구축되었으며 큰 이점을 얻을 수 있는 강력한 기능을 제공합니다.

관련 정보