부분 경로의 Zsh와 같은 탭 완성


11

Vim의 파일 이름에 대한 Bash와 같은 부분 탭 완성 관련

의 정말 환상적인 기능 중 하나는 zsh당신이, 예를 들어, 입력 할 수 있다는 것입니다 ls /u/s/m/m/who.1눌러 Tab그것은에 완료했다 ls /usr/share/man/man1/who.1.gz. 일단 익숙해지면 /u<tab>/s<tab>/m<tab>/m<tab>...특히 전체 부분 경로가 하나의 실제 경로로만 해석 될 수 있지만 각 개별 구성 요소가 여러 번 완료 될 수있는 경우 로 돌아가는 것이 정말 짜증 납니다. 이 빔 달성 될 수있다, 예를 들어, 사용 :e또는 :cd?

이러한 zsh를 이용하여 다른 유용한 경로 관련 기능있다 cd foo bar와 동등한 경로로 이동 foo치환은 bar(즉, /blah/foo/baz/yada가된다 /blah/bar/baz/yada). 이러한 것들을 가져 오는 솔루션이 있다면 (실제로 쉘 관련 작업을 매우 잘 수행하는 쉘로 넘겨줍니다), 좋습니다.


1
나는 당신이 요구하는 것을 정확하게 달성하는 것을 알지 못하지만 비슷한 방식으로 파일을 열 수있는 다양한 퍼지 파일 파인더가 있습니다. 나는 CtrlP를 선호하지만 Command-T도 있으며 이름을 잊어 버린 다른 것들이 있다고 확신합니다.
Rich

1
@Rich Tab을 12 번 으 깨지 않아도되는 한 행복 할 것입니다.
muru

이미이 비슷한 질문 SO에가.
romainl

답변:


6

나는 vim의 고유 한 힘을 실제로 발견 할 때까지 CtrlP 및 기타 관련 플러그인을 많이 사용했습니다. 외부 플러그인을 요구하지 않고이를 수행하는 몇 가지 방법을 설명하겠습니다.

  1. :e에 대해 좋은 점은 : e는 당신이 같은 것을 할 수 :e /u*/s*/m*/m*/<Tab>있고 vim이 자동으로 확장한다는 것 :e /usr/share/man/man입니다. 그것은 당신이 게시 한 것보다 훨씬 짧고 간단하지만 더 좋은 방법은 :e /usr/**/man<Tab>, 재귀 적으로보고 /usr모든 일치하는 경로를 나열하는 것입니다. 세트의 크기에 따라 시간이 걸릴 수 있지만 프로젝트는 당신이 같은 것을 할 수 있고 :e ap**/jav**/user<Tab>불완전한 모든 경로를 완성하고 일치하는 경로 목록을 제공하고 훌륭하게 작동 하기 때문에 놀라운 일입니다.
  2. :b, 기존 버퍼를 엽니 다. 이것은 기본적으로 부분을 허용하므로 실제로 강력합니다. 따라서 비슷한 작업을 수행 할 수 :b usr*man<Tab>있으며 파일 이름이 이미 버퍼 목록에로드 된 경우 파일 이름을 완성합니다. 거의 즉각적이고 빠르기 때문에 특히 좋습니다. 또한 tpope / vim-obsessiondhruvasagar / vim-prosession 의 도움으로 vim 세션을 많이 사용 하여 버퍼 목록에 열려있는 모든 파일을 유지하며 vim이 있고 vim이있는 경우에도 사용할 수 있습니다. 프로젝트 디렉토리.

1
/u*/s*/m*/m*/<Tab>내가 bash를 해결하는 데 사용한 방법입니다. 마일로 zsh를 대신하지는 않습니다. /usr/**/man<Tab>전체 파일 시스템을 열면 엄청나게 느리지 만 소규모 프로젝트에는 유용 ​​할 수 있습니다. 내가 오해하지 않는 한 :b새 파일을 여는 것이 아닙니다.
muru

@muru는 옳습니다 .zsh 대신 사용할 수는 없지만 직접 입력하는 것보다 낫습니다. 쉬워 지거나 엄청나게 **느리지 만 정기적 인 프로젝트에는 효과적입니다. :b기존의 오픈 버퍼를위한 것이므로 세션 사용이 도움이됩니다.
Dhruva Sagar 2012

5

vim-zsh-path-completion 은 당신이 요구하는 것을 (적어도 적어도) 정확하게 수행하기 위해 노력하지만, 결코 시도하지 않았습니다. (나는 romainl이 저자의 SO 답변에 링크하기 전까지는 들어 본 적이 없지만 문서에는 몇 가지 제한 사항이 언급되어 있습니다.

이 외에도 파일을 여는 것과 비슷한 것을 달성하는 다양한 퍼지 파일 파인더가 있습니다.

이것을 위해 내가 선호하는 플러그인은 CtrlP 입니다. 개방 파일에 사용하는 경우, 그것은 누구의 전체 경로를 올바른에에 입력하는 문자를 포함하는 모든 파일을 검색하기 위해 - 당신은하지 않습니다 당신과 같은 경로의 모든 구성 요소 (모든 경로 구분)의 부분에 입력 귀하의 예에는 있지만, 그렇게하면 완벽하게 잘 작동합니다. 또한 최근에 사용한 파일과 현재 열려있는 버퍼 등을 여는 데 동일한 인터페이스를 사용합니다.

기본적으로 <c-p>CtrlP 프롬프트를 열려면 일반 모드로 매핑 됩니다. 프롬프트는 파일 목록을 표시하며 문자를 입력 할 때 좁혀집니다. Enter아무 때나 눌러 현재 선택한 파일을 열거 나 <c-k><c-j>을 사용 하여 현재 일치하는 파일 목록에서 선택 항목을 위아래로 이동할 수 있습니다.

또 다른 인기있는 대안은 Command-T 이지만 VimScript로 구현되기 때문에 CtrlP를 선호합니다. Command-T에는 Ruby 구성 요소가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.