답변:
:!mycommand %:p
관련 :
:!cd %:p:h
:help filename-modifiers
:%p은 상대 경로가 아닌 파일의 절대 경로입니다. :%p%h파일의 상위 디렉토리에 대한 절대 경로입니다. just %:h을 사용 하면 상대 경로가 생성 될 수 있습니다.
cd ~ ; vim .vimrc, Vim : :!echo %:h, '.'이 표시되어야합니다. 상대 경로.
다른 두 답변은 (어떤 이유로) 저에게 효과가 없었습니다. 그러나이 콤보는 일반 모드에서 입력 할 때 전체 경로를 표시합니다.
그런 1다음CtrlG
출처 : Vim Tips Wiki의 " 현재 파일 이름 가져 오기". 의 {count}CTRL-G섹션을 참조하십시오 :help CTRL-G.
:!). 당신의 {count}CTRL-G순서는 UI에 전체 경로를 표시하기위한 것입니다.
현재 vim 파일 이름을 인쇄하려면 :
:help expand
:echo expand("%:p") " absolute path
:echo expand("%:p:h") " absolute path dirname
:echo expand("%:p:h:h")" absolute path dirname dirname
:echo expand("%:.") " relative path
:echo expand("%:.:h") " relative path dirname
:echo expand("%:.:h:h")" relative path dirname dirname
:echo expand("<sfile>:p") " absolute path to [this] vimscript
:help filename-modifiers
(a VIM 기능) 예 할 resolve()및 expand()현재 스크립트 절대 경로에 대한 심볼 링크 <sfile>:p(대신 %:p) 다음 execto -ed 파일명 함수 VIM 로컬 변수를 포함 :sourcefnameescapel:vimrcfilename
" g:__sfile__dirname -- directory containing this vimrc script
" after symlinks
" ~dirname(abspath(realpath(__file__)))
let g:__sfile__dirname=fnamemodify(resolve(expand("<sfile>:p")), ":h")
" Source_dotvim(filename) -- source dirname(this_vimrc)/filename
function Source_dotvim(filename)
let l:vimrcfilename=g:__sfile__dirname . "/" . a:filename
if filereadable(l:vimrcfilename) && !empty(l:vimrcfilename)
"source s:vimrcfilename "this doesn't work, so exec:
exec "source " . fnameescape(l:vimrcfilename)
else
echo l:vimrcfilename . " empty or not found."
endif
endfunction
call Source_dotvim("vimrc.local.01-env.vimrc")
노트:
:help fnamemodify%:p(버퍼 파일) / <sfile>:p(스크립트 파일)expand('<sfile>') 함수 내에서 작동하지 않습니다.l:varname가 작동하지 않습니다. 그래서 exec-문자열 연결-그리고fnameescape:messages 가장 최근의 200 vim [오류,] 메시지를 인쇄합니다.참고 문헌
현재 파일의 이름을 가져옵니다. http://vim.wikia.com/wiki/Get_the_name_of_the_current_file
Set_working_directory_to_the_current_file http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file