我已经在我的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>
答案 0 :(得分:3)
%
(:help cmdline-special
)等特殊字符会自动扩展为Vim&#34;在可以使用文件名的地方#34; (引用帮助)。这包括:!
命令,因此以下就足够了:
nnoremap <C-q> :! %:p<CR>
现在,如果你想进行比:p
更复杂的修改,那么会有两种选择:
:execute
:nnoremap <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>