获取vim将当前文件路径传递给我的shell

时间:2015-03-26 19:57:06

标签: shell powershell vim

我已经在我的vimrc中有了这个:

set shell=powershell
set shellcmdflag=-command

现在我想将powershell传递给当前文件的路径,以便它可以运行它。我试过这个:

nnoremap <C-q> :! expand('%:p')<cr>

以下是我在powershell中看到的内容:

powershell -command " expand('\\path\to\my\file....

显然这不起作用,因为我在那里弄到了 expand()。如何只将当前文件的完整路径传递给我的shell?

此外,在任何人说出我有自己的映射之前我用于视觉块,这就是为什么我重新映射<C-q>

2 个答案:

答案 0 :(得分:3)

%:help cmdline-special)等特殊字符会自动扩展为Vim&#34;在可以使用文件名的地方#34; (引用帮助)。这包括:!命令,因此以下就足够了:

nnoremap <C-q> :! %:p<CR>

现在,如果你想进行比:p更复杂的修改,那么会有两种选择:

  • 使用:executennoremap <C-q> :execute '!' expand('%:p')<CR>
  • <C-R>与表达式寄存器nnoremap <C-q> :! <C-r>=expand('%:p')<CR><CR>
  • 一起使用

答案 1 :(得分:2)

如何使用%:p

nnoremap <C-q> :!%:p<CR>