Como posso verificar se o shell atual está sendo usado a partir do vim?

5

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?

    
por Wuffers 17.10.2010 / 18:38

4 respostas

15

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.

    
por 17.10.2010 / 19:16
5

Eu digito ps (sem nenhuma opção) e vejo se o vim está listado.

    
por 17.10.2010 / 19:14
0

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? .

    
por 17.10.2010 / 19:22
0

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.

    
por 21.08.2011 / 17:25

Tags