比如在 vim 中执行 python 代码可以这么定义快捷键
map <silent> <F5> :call Compile()<CR>
function! Compile()
exec "w"
if &filetype == "python"
exec "!python %"
endif
endfunc
但是如果想在 windows 下执行 powershell 呢? 我尝试过这样
if &filetype == "ps1"
exec "!powershell %"
endif
也尝试过这样
if &filetype == "ps1"
exec "!%"
endif
但是都失败了,具体该怎么写规则呢?
1
jswh 2016-12-08 22:10:07 +08:00
我猜,你要写上 poweshell 可执行程序的完整路径
|
2
josephpei 2016-12-09 09:39:17 +08:00
vim quickrun 之类的
|
3
skywind3000 2016-12-10 00:18:02 +08:00
因为你取的 &filetype 是需要 vim 识别得了的 filetype ,不是文件扩展名,你把它当文件扩展名来判断,显然是不正确的,你可以 ":echo &filetype" 看看你的文件是什么类型的。 ps1 的文件 &filetype 的值是 "",空,因为 vim 不识别。
取文件扩展名要用 expand("%:e") 来取,而且你上面直接使用 %也是不对的,文件名里面包含空格就挂掉了。再者你用 GVim 的话,这种直接 !的运行方式很不友好, Vim 会卡住,提示你按任意键继续。不知道网上流传的这段代码是谁写的,导出转载却又错误百出。 如何在 Vim/GVim (windows) 里面优雅的运行程序呢?见我博客。 http://www.skywind.me/blog/archives/1708 |
4
chenggiant 2016-12-12 23:13:32 +08:00
还是直接用 quickrun 吧
|
5
KentY 2016-12-14 18:20:22 +08:00
powershell 0 经验, 没法帮上忙, 但是关于你的 python 运行, 你利用 autocmd 只对 python 文件建立 mapping, 并且 ,`%` 应该做处理. 你可以参考我在这个问题的回答以及下方评论.
http://stackoverflow.com/questions/18948491/running-python-code-in-vim/18948530#18948530 |