我的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/

    10-12 19:22