当我进入命令模式并输入
时:!mycommand %
我在当前文件上执行了我的命令(%
扩展为当前文件名)。
是否有类似的构造扩展完整文件名(带完整路径)?
我正在使用Windows。
答案 0 :(得分:155)
:!mycommand %:p
相关:
:!cd %:p:h
答案 1 :(得分:64)
其他两个答案对我不起作用(出于某种原因)。但是,我发现这个组合在正常模式下输入时显示完整路径:
按 1 然后 Ctrl G
来源:Vim Tips Wiki上的“Get the name of the current file”。另请参阅:help CTRL-G
的{count}CTRL-G
部分。
答案 2 :(得分:29)
附加:p
,例如
:!mycommand %:p
%:p:h
将为您提供文件所在目录的路径。
答案 3 :(得分:9)
打印出当前的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
例如(使用vim函数),resolve()
和expand()
指向当前脚本<sfile>:p
(而不是%:p
)的绝对路径的任何符号链接,以及然后exec
到source
fnameescape
- ed文件名包含在函数本地vim变量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>')
does not work from within a function l:varname
does not work; so, exec
- string concatenation - and fnameescape
:messages
打印最近的200条vim [错误,]消息参考
答案 4 :(得分:2)
获取当前文件的名称 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
答案 5 :(得分:0)
如果您想使用vimrc
中的完整路径,可以使用以下内容:
let vimFiles = '$HOME/.vim'
let absPath = expand(vimFiles . '/subDir')
这将为您提供Windows上带反斜杠的路径。