我的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>
最佳答案
Vim会在“可以使用文件名的地方”自动扩展诸如%
(:help cmdline-special
)之类的特殊字符(引用帮助)。这包括:!
命令,因此以下内容就足够了:
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>
关于shell - 获取vim以将当前文件路径传递给我的shell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29287676/