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()

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

Vim을 사용하여 Vim 내부를 :terminal실행하는 것도 좋은 선택입니다.fzf:!

어쨌든 여기서 가장 좋은 접근 방식은 Vim 플러그인 중 하나를 사용하는 것입니다.fzf그 자체이며 아마도 더 완전할 수도 있습니다.fzf.vim이는 낮은 수준의 플러그인을 기반으로 구축되어 주변에서 얻을 수 있는 이점을 얻을 수 있는 강력한 기능을 제공합니다.

관련 정보