[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) 다음 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")

노트:

참고 문헌


답변

현재 파일의 이름을 가져옵니다.
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에서 백 슬래시가있는 경로를 제공합니다.


답변