No vi, posso obter um terminal shell com o :sh
comando E depois, eu posso retornar ao vi por exit
shell.
Mas, se eu estava usando o terminal shell por um longo tempo, e esqueci se exit
fecharia alguma coisa ou me devolveria o vi.
Existe alguma maneira de verificar se eu retornarei ao vi? jobs
ou fg
não está funcionando.
external-command
hailinzeng
fonte
fonte
Respostas:
Em uma concha regular:
Depois de usar
:shell
Portanto, parece que Vim define os
VIMRUNTIME
,VIM
eMYVIMRC
variáveis de ambiente. Dessas, meVIM
parece a mais confiável (você pode não ter um tempo de execução do vimrc ou mesmo do vim).Você também pode definir suas próprias variáveis de ambiente:
Isso é especialmente útil para comunicar informações sobre o buffer que você está editando; por exemplo:
Aparecerá algo como:
fonte
Eu tenho meu prompt de comando configurado para adicionar um símbolo "+" vermelho que indica se estou em um vim ": sh" em oposição a uma sessão normal do shell. A pedra angular é que "$$" é o pid do processo atual, portanto:
Depois de ter isso, você pode facilmente incorporar e construir algo como eu descrevi para usar no seu ".bashrc" ou similar.
Nota : O método da variável de ambiente ($ VIM) descrito em outro lugar parece melhor que isso, mas deixarei isso, pois ele identifica se você é um processo filho de alguma coisa (não apenas do vim).
fonte
:sh
: MYVIMRC, VIM e VIMRUNTIME. Tudo o que você precisa fazer para saber que está executando um sub-shell do Vim é testar a presença de qualquer um deles.Execute
ps
, ou melhorps -fH
. Ex:A vantagem de usar
ps -fH
over justps
é que ele permite ver se você está em uma subcascavim
ou se colocavim
em segundo plano. Nesse caso,ps -fH
ficaria assim:fonte