env | grep vim
lista as variáveis de ambiente que o vim passa para o seu shell. Eu duvido que VIMRUNTIME
seja definido se você não tiver iniciado seu shell a partir do vim.
Estou executando o OS X. No vim, se você executar o comando :sh
, poderá descartar um shell para executar comandos. Eu constantemente esqueço se estou nesta concha ou não.
Existe alguma maneira de verificar se estou no shell vindo do vim?
Eu digito ps
(sem nenhuma opção) e vejo se o vim está listado.
Você pode ver o nome do comando do processo pai do shell: ps -o comm= -p $PPID
. Você poderia, por exemplo, alterar seu prompt para incluir o ID do processo pai.
Além disso, se você deseja apenas alterar seu prompt em shells que não estão sendo executados diretamente dentro de um emulador de terminal, é possível testar isso verificando se o terminal de controle do shell é o mesmo que o do seu pai. Se o pai for um emulador de terminal, ele não terá seu próprio terminal como terminal de controle.
Por exemplo, se você colocar as seguintes linhas no seu ~/.kshrc
ou ~/.bashrc
ou ~/.zshrc
(escolha o apropriado para o seu shell), seu prompt começará com {vim}
se o shell estiver sendo executado em vim
:
parent_command=$(ps -o comm= -p $PPID)
parent_command=${parent_command##*/}
if [ "$(ps -o tty= -p $$)" = "$(ps -o tty= -p $PPID)" ]; then
# Not running directly under a terminal emulator
PS1="{$parent_command}$PS1"
fi
Você também pode estar interessado em algumas das discussões sobre Como saber o" nível "de conchas em que estou? .
Você pode usar o MacVim ( link ). Se o seu shell veio ou não de uma instância vim se torna bastante óbvio, já que seu shell está em uma janela do MacVim e não em uma janela do Terminal.