vi에서는 :sh
명령 으로 쉘 터미널을 얻을 수 있습니다 . 그리고 나중에 exit
쉘로 vi로 돌아갈 수 있습니다 .
그러나 오랫동안 쉘 터미널을 사용하고 있다면 exit
아무것도 닫거나 vi를 반환 할지 잊어 버렸습니다 .
vi로 돌아갈 지 여부를 확인할 수있는 방법이 있습니까? jobs
또는 fg
작동하지 않습니다.
vi에서는 :sh
명령 으로 쉘 터미널을 얻을 수 있습니다 . 그리고 나중에 exit
쉘로 vi로 돌아갈 수 있습니다 .
그러나 오랫동안 쉘 터미널을 사용하고 있다면 exit
아무것도 닫거나 vi를 반환 할지 잊어 버렸습니다 .
vi로 돌아갈 지 여부를 확인할 수있는 방법이 있습니까? jobs
또는 fg
작동하지 않습니다.
답변:
일반 쉘에서 :
$ env | grep -i vim
EDITOR=vim
사용 후 :shell
$ env | grep -i vim
EDITOR=vim
VIMRUNTIME=/usr/share/vim/vim80
VIM=/usr/share/vim
MYVIMRC=/home/martin/.vim/vimrc
빔이 설정처럼 그래서 외모 VIMRUNTIME
, VIM
그리고 MYVIMRC
환경 변수를. 그중 VIM
가장 신뢰할만한 것 같습니다 (vimrc 또는 vim 런타임이 없을 수도 있습니다).
자체 환경 변수를 설정할 수도 있습니다.
:let $HELLO = "test"
:shell
$ echo $HELLO
test
이것은 편집중인 버퍼에 대한 정보를 전달하는 데 특히 유용합니다. 예를 들면 다음과 같습니다.
:let $VIM_FILETYPE = &filetype
:let $VIM_FILENAME = expand('%:p')
다음과 같이 표시됩니다.
VIM_FILETYPE=go
VIM_FILENAME=/home/martin/a.go
일반 쉘 세션과 달리 vim ": sh"에 있는지 여부를 나타내는 빨간색 "+"기호를 추가하도록 명령 프롬프트를 설정했습니다. 그 핵심은 "$$"가 현재 프로세스의 pid이므로 다음과 같습니다.
MY_PPID=$(ps --no-header -o ppid -p $$) # Gets the pid of the parent
# process.
MY_PCMDLINE=$(ps --no-header -o cmd -p $MY_PPID) # Gets its command line.
MY_CMDDASH=$(awk '{print $1}' <<<$MY_PCMDLINE) # Gets the command name, possibly
# with a preceding hyphen.
MY_CMD=${MY_CMDDASH#-} # Get the bare command name.
이 기능을 갖추면 ".bashrc"또는 이와 유사한 기능을 사용하도록 설명 된 것과 같이 쉽게 인라인하고 구성 할 수 있습니다.
참고 : 다른 곳에서 설명 된 환경 변수 ($ VIM) 방법은 이것보다 낫지 만 vim이 아닌 자식 프로세스인지 확인하는 데 도움이됩니다.
:sh
MYVIMRC, VIM 및 VIMRUNTIME이라는 세 가지 변수를 쉘 환경에 넣습니다. Vim의 하위 셸에서 실행되고 있음을 알기 위해해야 할 일은 해당 구성 요소가 있는지 테스트하는 것입니다.
ps
또는 더 나은 실행하십시오 ps -fH
. 전의:
$ ps -fH
UID PID PPID C STIME TTY TIME CMD
garyjohn 31140 31139 0 10:26 pts/11 00:00:00 bash
garyjohn 31267 31140 2 10:26 pts/11 00:00:00 vim hello.txt
garyjohn 31271 31267 0 10:26 pts/11 00:00:00 /bin/bash
garyjohn 31332 31271 0 10:26 pts/11 00:00:00 ps -fH
ps -fH
over 를 사용 하는 ps
것의 장점 은 하위 쉘에 vim
있는지 또는 vim
배경에 넣었는지 확인할 수 있다는 것 입니다. 이 경우 ps -fH
다음과 같습니다.
$ ps -fH
UID PID PPID C STIME TTY TIME CMD
garyjohn 31140 31139 0 10:26 pts/11 00:00:00 bash
garyjohn 31267 31140 0 10:26 pts/11 00:00:00 vim hello.txt
garyjohn 31924 31140 0 10:29 pts/11 00:00:00 ps -fH