Vim의 콘텐츠에 현재 파일 이름을 삽입하는 방법은 무엇입니까?

Vim의 콘텐츠에 현재 파일 이름을 삽입하는 방법은 무엇입니까?

:echo @%몇 번 검색한 후에 vim 화면의 맨 아래 줄에 현재 파일 이름이 표시된다는 것을 알게 되었습니다 .

.vim

이를 수행할 수 있는 방법이 있습니까?

답변1

현재 파일 이름은 "%레지스터에 있으므로 ; (삽입 모드에서)을 사용하여 삽입할 수 있습니다 <c-r>%. 전체 경로 삽입을 사용할 수 있습니다 <c-r>=expand("%:p"). 자주 사용하시면 매크로를 만들어서 사용하시면 됩니다. 이와 같은 추가 팁을 보려면 :h expand및 을 참조하세요 :h "=.

답변2

이 작업을 수행하는 다른 방법이 있을 것이라고 확신합니다... 하지만 원하는 주요 명령은 :r[ead]명령의 출력을 버퍼에 삽입하는 것입니다.

따라서 파일 이름을 삽입하면 됩니다.

:r! echo %

그리고 전체 경로를 포함하려면 다음을 수행하세요.

:r! echo %:p

자세한 내용은:

:help read
:help filename-modifiers 

답변3

그림에서 볼 수 있듯이 :h registers레지스터 "%에는 현재 파일 이름이 포함되어 있습니다. 이 :pu[t]명령은 레지스터의 내용을 텍스트에 삽입합니다.

따라서 실제 파일 이름을 삽입하려면 명령 모드에서 다음 명령 중 하나를 입력하면 됩니다.

:put %

또는

"%p

전체 경로와 함께 파일 이름을 삽입하려면 다음을 입력하십시오.

:put=expand('%:p')

명령 모드에서.


추가 정보:

:h pu[t]

입력하면 "rp레지스터의 내용을 붙여넣을 수 있습니다 "r.

답변4

이 작업을 자주 수행해야 하는 경우 아래와 같이 키 시퀀스를 원하는 항목에 바인딩하는 것이 유용할 수 있습니다.http://vim.wikia.com/wiki/Insert_current_filename

삽입 모드에서는 확장자 없이 현재 파일 이름을 커서 위치에 삽입합니다.

:inoremap \fn <C-R>=expand("%:t:r")<CR>

확장을 유지하려면 다음을 사용하십시오.

:inoremap \fn <C-R>=expand("%:t")<CR>

파일이 사용 중인 디렉터리에 대한 절대 경로를 삽입하려면 다음을 수행하세요.

:inoremap \fn <C-R>=expand("%:p:h")<CR>

파일이 사용하는 디렉토리에 대한 상대 경로를 삽입하려면 다음을 수행하십시오.

:inoremap \fn <C-R>=expand("%:h")<CR>

위의 모든 작업은 vim세션에서 직접 작동하거나 세션에 넣을 수 있습니다 .vimrc(줄의 선행 콜론은 선택 사항임).

관련 정보