현재 파일의 전체 경로를 어떻게 볼 수 있습니까?


123

Vim에서 파일을 편집 할 때 현재 파일의 경로를 볼 수있는 명령이 있습니까? 프로젝트에 같은 이름을 가진 파일이 여러 개있는 경우 매우 유용합니다.

답변:


142

당신은 누를 수 있습니다 {count}Ctrl-G:

{count}CTRL-G       Like CTRL-G, but prints the current file name with
                    full path.  If the count is higher than 1 the current
                    buffer number is also given.

1다음에 Ctrl+를 누르면 G현재 파일의 전체 경로가 표시됩니다. 경우 {count}(1)보다 높은 버퍼 이름도 표시한다.

( Ctrl+ 만 누르면 G주석에서 Jasper가 지적한 Vim의 현재 작업 디렉토리에 상대적인 경로가 표시됩니다.)

다음 명령을 사용하여 .vimrc상태 표시 줄에 전체 경로를 추가 할 수 있으므로 항상 표시됩니다.

set statusline+=%F

4
아닌가 Ctrl+G보다 '정력의 CWD에 대한 상대 경로'처럼?
— 재스퍼

@ 재스퍼 잘 잡아라! 답변을 업데이트했습니다.
— thameera 2019

4
보인다 C-g디폴트 인 0C-g및 2C-g표시 버퍼 이외에도 (1부터) 인덱스 번호.

나는 당신의 답을 100 번째로 올리는 것이 기쁘다. 이것에 감사드립니다 1C-g!
— Vault

53

레지스터 %는 현재 파일의 이름을 포함합니다.

표시된 정보를 표시하기 위해 다음 명령을 입력 할 수 있습니다.

:echo @%                |" directory/name of file
:echo expand('%:t')     |" name of file ('tail')
:echo expand('%:p')     |" full path
:echo expand('%:p:h')   |" directory containing file ('head')

원되는 모든 현재 파일 유형의 이름을 표시하는 경우 :f/ :ls누르거나 Ctrl- g(전체 경로 다리미를 1다음 Ctrl- g).

삽입 모드에서 Ctrl- r를 입력 %하여 현재 파일의 이름을 삽입하십시오.

다음 명령은 현재 및 대체 파일의 전체 경로로 구성된 행을 버퍼에 삽입합니다.

:put =expand('%:p')
:put =expand('#:p')

출처 : vim wikia에서 현재 파일 이름 가져 오기

관련 :


2
삽입 모드에있을 때에도 해당 =expand...표현식을 사용할 수도 있습니다 Ctrl-R.
— dash-tom-bang

22

:!ls %:p현재 파일의 전체 경로를 얻는 데 사용할 수 있습니다 .

ex 컨텍스트에 따라 %파일의 내용 또는 파일 이름을 의미합니다. 셸 아웃하면 현재 디렉토리에 상대적인 파일 경로를 나타냅니다. ' %:p' 명령 은 전체 경로 파일 이름 수정 자에 추가합니다 %.

다음과 같은 몇 가지 다른 흥미로운 파일 이름 수정자가 있습니다.

  • :~: 홈 디렉토리에 상대적인 파일 경로를 가져옵니다 (어떤 이유로 나에게 작동하지 않음)
  • :.: 현재 디렉토리를 기준으로 파일 경로를 가져옵니다 ( %기본값).
  • :r: 파일 이름 루트. 확장자가없는 파일의 이름입니다.
  • :e: 파일 확장자.
  • :h: 분할 /하고 왼쪽 절반을 반환합니다 (즉, 경로에서 파일을 편집 /tmp/test.txt하고 실행 %:p:h하면/tmp
  • :t: 분할 /하고 오른쪽 절반을 반환합니다 (즉, 경로에서 파일을 편집 /tmp/test.txt하고 실행 %:p:t하면text.txt

P : 난 당신이 %를 의미 생각 t이 text.txt 반환합니다
— 존 O'M합니다.

@ JohnO'M. 네, 맞습니다. : D. 결정된.
— CharlesL

7

로 현재 작업 디렉토리를 볼 수 있습니다 :pwd. 물론 이것은 파일 이름이 아닌 디렉토리 일뿐입니다. 작업 디렉토리와 파일 이름을 얻기 위해 %현재 파일에 대한 정보가 들어 있는 특수 레지스터를 사용할 수 있습니다 .

를 사용 :echo @%하면 현재 파일의 디렉토리와 파일 이름이 표시됩니다.
를 사용 :echo expand('%:p')하면 현재 파일의 전체 경로와 파일 이름이 표시됩니다. 이것은 CharlesL의 답변 과 매우 유사합니다 .

당신은 정력의 도움을 사용하는 경우 때문에,하지만,이 일을 기억 :h expand, 그것은 그 언급 %하고 %:p자신의 친척.



3

확인 된 심볼릭 링크를 포함하여 모든 파일의 전체 경로를 표시하려면 다음을 사용하십시오.

:echo resolve(expand('%:p'))

3

더 나은 대답이 있지만 (어떤 이유로 든) 쉘을 사용하여 파일의 전체 경로를 얻으려는 경우 (쉘이있는 파일에서 다른 작업을 수행하려는 경우 더 유용합니다), 유닉스 계열 시스템에서 다음을 실행할 수 있습니다.

:!realpath %

또는:

:'<,'>!realpath %

현재 선택을 통해 문서에 경로를 삽입합니다.

레지스터 %에는 항상 파일 이름이 포함됩니다. 실제 예는 구성 파일을 편집하고 있지만 쓰기 권한이없고 (Vim을 루트로 실행하지 않으려는 경우) 파일을 편집 한 후 다음을 실행할 수 있습니다.

:w ! sudo tee %

파일을 저장하려면 (소소한 주제가 있지만 %레지스터로 다른 작업을 수행 할 수있는 좋은 예입니다 ).


realpathPOSIX가 아니므로 더 간단 할 수 있습니다.!echo "$PWD/%"
— muru

합의 좋은 전화.
— Sam Whited

2

상태 표시 줄을 볼 수 있도록 설정하고 경로로 설정해야합니다. ~ / .vimrc에 아래 두 줄을 추가하여 영구적으로 그렇게했습니다.

set laststatus=2
set statusline+=%F

한 번만 실행하려면 그런 다음 문서 유형을 VI 할 때

:set laststatus=2       <ENTER>
:set statusline+=%F     <ENTER>

1
이것은 동일한 질문에 대해 thameera가 작성한 것과 동일한 답변입니다.
— statox


1

제목 표시 줄에 편집중인 파일의 전체 경로를 표시 할 수 있습니다. 제 의견에 파일 경로를 표시하는 편리한 방법입니다.

그러기 위해서는 title옵션 을 설정해야합니다 titlestring. 현재 다음 설정을 사용하고 있습니다.

set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}

Vim의 호스트 이름, 파일의 전체 경로 및 파일의 마지막 수정 시간이 표시됩니다. 데모는 아래 그림을 참조하십시오

여기에 이미지 설명을 입력하십시오

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