[vim] Vim의 명령에 전달할 현재 파일의 전체 경로를 확장하려면 어떻게해야합니까?
명령 모드로 이동하여 입력하면
:!mycommand %
현재 파일에서 내 명령이 실행됩니다 ( %
현재 파일 이름으로 확장 됨). 전체 파일 이름 (전체 경로 포함)을 확장하는 유사한 구조가 있습니까?
Windows를 사용하고 있습니다.
답변
:!mycommand %:p
관련 :
:!cd %:p:h
답변
다른 두 답변은 (어떤 이유로) 저에게 효과가 없었습니다. 그러나이 콤보는 일반 모드에서 입력 할 때 전체 경로를 표시합니다.
그런 1다음CtrlG
출처 : Vim Tips Wiki의 ” 현재 파일 이름 가져 오기”. 의 {count}CTRL-G
섹션을 참조하십시오 :help CTRL-G
.
답변
추가 :p
, 예 :
:!mycommand %:p
그리고 %:p:h
파일이있는 디렉토리의 경로를 제공합니다.
답변
현재 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
) 다음 exec
to -ed 파일명 함수 VIM 로컬 변수를 포함 :source
fnameescape
l: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
답변
에서 전체 경로를 vimrc
사용하려면 다음과 같이 사용할 수 있습니다.
let vimFiles = '$HOME/.vim'
let absPath = expand(vimFiles . '/subDir')
이것은 Windows에서 백 슬래시가있는 경로를 제공합니다.