我的路径类似于/home/me/projects/project_name/the_part/i_wanna/keep.yestheextensiontoo
我写了这个函数:
function! CurrentPath()
let filepath = expand("%")
let spl = split(filepath, '/')
let short = spl[4:-1]
let newpath = join(short, '/')
return newpath
endfunction
字符串
我想将生成的修剪路径the_part/i_wanna/keep.yestheextensiontoo
传递给sudo命令
我希望有这样的东西工作:
nnoremap <F4> :w !sudo bin/test CurrentPath()<CR>
型
理想情况下类似于rspec-vim的工作方式,在控制台中运行命令(替换了vim会话),然后当你按回车键(命令执行后),你就回到vim会话。
1条答案
按热度按时间mpbci0fu1#
Map:
字符串
在
!
之后,除了一些特殊的项目,比如%
或#
(参见:help cmdline-special
)之外,所有的东西都传递给shell,所以你不能真正期望CurrentPath()
在这里被计算。最简单的方法是使用“表达式Map”,在运行时计算整个Map右侧:
型
当你按
<F4>
时,CurrentPath()
被计算并与其余的连接,然后整个内容被发送到你的shell。