gf와 같은 커서 아래에서 파일 이름을 열지 만 새 탭에서 (또는 분할)?


43

일반 모드 명령 gf은 현재 커서가있는 경로를 가진 파일로 이동합니다.

그러나 현재 창에서 그렇게하여 현재 텍스트를 바꿉니다. 즉, 나중에 뒤로 이동하려면 명시 적으로 뒤로 이동해야하며 현재 버퍼의 변경 사항을 잠재적으로 작성해야합니다.

대신 새 탭보기에서 커서 아래 파일을 여는 것이 가능합니까?


3
'hidden'옵션 ( set hidden)을 켜면 저장되지 않은 버퍼에서 벗어날 수 있습니다. 저에게는 이것이 생산성 향상에 큰 도움이되었으며 스플릿과 탭에 너무 의존하지 않는 것이 중요했습니다.
tommcdo

답변:


56

편집 : Vim에는 기본적으로 수평 분할 케이스에 대한 두 개의 매핑이 있기 때문에 수직 분할 케이스에 대한 대칭 대칭 매핑을 제안하십시오.

"커서 아래의 파일"을 편집하는 방법에는 여러 가지가 gf있으며 @ alexander-myshov가 언급 한 것처럼 새 탭 페이지에서 편집하도록 다시 매핑 할 수는 있지만 새 탭 페이지에서 편집 할 수있는 두 가지 방법이 있지만 현재 창에서 편집 할 수도 있습니다. 때로는 원할 수도 있습니다. 표준 매핑을 사용하는 것은 어렵지 않지만 그중 하나를에 다시 매핑하려면 매핑 중 하나를 잃지 않도록 매핑을 전환 하는 gf것이 좋습니다 .

커서 아래에서 파일 이름을 편집하는 방법 중 일부는

  • gf -같은 창에서 커서 아래 기존 파일 편집
  • C-Wf -분할 창에서 커서 아래 기존 파일 편집
  • C-WC-F -분할 창에서 커서 아래 기존 파일 편집
  • C-Wgf -새 탭 페이지에서 커서 아래 기존 파일 편집

수직 분할에서 커서 아래에있는 기존 파일을 편집하는 표준 매핑은 없지만 먼저 창을 수직으로 분할 한 다음 현재 창에서 커서 아래에있는 파일을 편집하면 파일을 얻을 수 있습니다.

  • C-Wv+ gf-세로 분할 창에서 커서 아래의 기존 파일 편집

위에서 볼 수 있듯이 가로 분할에서 커서 아래 파일을 편집하기위한 두 가지 기본 매핑이 있습니다. 따라서 이들 중 하나를 위의 키 스트링에 다시 매핑하여 맵 그룹을 확장하여 세로 분할 사례도 포함 할 수 있습니다. 물론 무엇이든 바인딩 할 수 있지만 대칭을 멋지게 완성하는 것처럼 보입니다 nnoremap <C-W><C-F> <C-W>vgf. 이제 당신은

  • gf -같은 창에서 커서 아래 기존 파일 편집
  • C-Wf -분할 창에서 커서 아래 기존 파일 편집
  • C-WC-F -세로 분할 창에서 커서 아래 기존 파일 편집
  • C-Wgf -새 탭 페이지에서 커서 아래 기존 파일 편집

커서 아래의 파일 이름 뒤에 줄 번호가 있으면 파일의 특정 줄로 이동할 수도 있습니다. 당신이 가지고 있다면

filename:10

파일을 편집하고 커서를 사용하여 10 행으로 이동하도록 할 수 있습니다 gF. 등가는 마찬가지입니다 C-WF분할 및 C-WgFtabpage을 위해. 수직 분할에 대한 대칭을 완성하는 것은 여기서 간단하지 않지만 기본 맵에서 또는 + 를 후보로 모방하여로 C-WC-S-F얻은 맵을 제안합니다 .nnoremap <C-W><C-S-F> <C-W>vgFFShiftf

:예를 들어, 당신은 파일 이름 문자 (참조 아닌 모든 문자를 사용할 수있다 :h 'isfname').


이 모든 명령은 다음과 같은 사과 소스와 함께 제공됩니다

  • wildchars를 확장
  • 귀하의 'path'선택 에 따라 현재 디렉토리보다 더 많은 장소를 찾으십시오.
  • 'suffixesadd'옵션 에 따라 파일 확장명을 파일 이름에 추가
  • 그렇지 않으면 'includeexpr'옵션 에 따라 일치하는 이름을 찾기 위해 지정된 파일 이름을 수정하십시오.

:help gf다양한 옵션에 대한 자세한 내용 과 도움말 항목을 읽으십시오 .


커서 아래의 파일 이름이 존재하지 않는 파일 이름을 지정하면 다음과 <cfile>같이 표준 편집 명령을 사용하는 것이 좋습니다.

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

물론 이것들을 사용 :spl+10 filename하면 커서를 특정 줄로 :tabe+/cologne filename옮기거나 커서를 패턴의 첫 번째 발생으로 옮기는 것과 같은 것을 사용할 수 있습니다 .


+1 명료 한 설명이 담긴 최고의 의견. 여러 주제에 걸쳐 문서를 나누는 것보다 훨씬 낫습니다.
가능성을 사랑

8

이를 위해 바인딩을 사용하십시오.

새 창에서 열기 (분할) :

nnoremap gf <C-W>f
vnoremap gf <C-W>f

새 탭에서 열기 :

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

또한 이것을 확인하십시오 : :help CTRL-W_gf


이것들이 당신을 위해 확실히 작동합니까? Vim은 내가 gf다른 것에 다시 매핑 하기 를 원하지 않는 것 같습니다 . 심지어 nnoremap gf :echo "hello"<CR> 여전히 새로운 버퍼에서 커서 아래 파일을 엽니 다 (그래, 나는 vimrc에 공급).
tandrewnichols

아, 신경 쓰지 마-플러그인 간섭이 있습니다.
tandrewnichols
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.