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


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-g2C-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.