如何判断 vim 是在命令行还是在 powershell 中运行 [英] How to tell if vim is being run in command line vs. powershell

查看:37
本文介绍了如何判断 vim 是在命令行还是在 powershell 中运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做一个函数来执行以下操作

I would like to make a function which does the following

if (vim is running in powershell)
    call system("only works in powershell")
else
    echo "Skipping powershell command"

有谁知道如何判断 vim 是从哪个程序运行的?

Does anyone know how to tell what program vim is being run from?

echo &term 在两种情况下都输出win32".

echo &term outputs "win32" in both cases.

推荐答案

据我所知,你不需要检查 vim 是从什么运行的.您需要检查 &shell 的值,因为如果 &shell 选项告诉它在 powershell 中运行命令,vim 将在 powershell 中运行命令.如果 shell 的名称是 posh 然后检查可以用

From what I see you don’t need to check what vim was run from. You need to check the value of &shell because vim will run command in powershell if &shell option tells it to run command in powershell. If name of the shell is posh then checking may be done with

if stridx(&shell, 'posh')!=-1
    call system('only works in powershell')
else
    echo 'Skipping powershell command'
endif

.但我宁愿建议直接使用类似

. But I would rather suggest to run powershell directly with something like

call system('posh -c '.shellescape('only works in powershell'))

(注意:我不确定 'posh -c ' 字符串实际上应该是什么样子)或临时设置 &shell 选项:

(note: I am not sure about what 'posh -c ' string should actually look like) or temporary set &shell option:

let savedsh=[&shell, &shellcmdflag, &shellxquote, &shellxescape, &shellquote, &shellpipe, &shellredir]
set shell=posh shellcmdflag=-c shellxquote=\" shellquote=\" shellpipe=> shellredir=>
try
    call system('only works in powershell')
finally
    let [&shell, &shellcmdflag, &shellxquote, &shellxescape, &shellquote, &shellpipe, &shellredir]=savedsh
endtry

(同样,不确定选项的确切值):这些方式命令将始终在 powershell 中运行.

(again, not sure about exact values of options): these ways command will always run in powershell.

这篇关于如何判断 vim 是在命令行还是在 powershell 中运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆