В дополнение к ответу @ a3nm, вы можете
- использовать
pstree -h
: оно выведет дерево процессов с выделенной текущей веткой, и все, что вам нужно проверить, - есть ли vim ввыделение. - Другая возможность -
ps t
: она покажет все процессы, использующие текущий терминал, и должна отображать vim
в списке, когда вы находитесь внутри :sh
.ps -oargs t
может быть более полезным, если вам нужны аргументы, с которыми вы запускали vim.
Эти методы более надежны, поскольку переменные окружения VIMRUNTIME
, VIM
и MYVIMRC
могут быть переопределенывами для выполнения некоторых настроек (кстати, они определены vim для использования в vimscripts, а не :sh
).Они также работают для других процессов, которые позволяют запускать подоболочку, но не определяют никаких переменных среды.
Я бы также предложил рассмотреть возможность использования <C-z>
в обычном режиме или :suspend
/ :stop
вEx, потому что они используют оболочку vim, которая была запущена вместо создания новой.Это поведение дает вам доступ к истории команд, которые вы ввели перед запуском vim, а также дает вам возможность писать более сложную и трудоемкую конфигурацию оболочки без необходимости каждый раз ждать.
В случае использования <C-z>
обоихметоды все еще работают, но первый метод не будет выделять vim, потому что он будет на том же уровне (имеет того же родителя), что и сам pstree
, вероятно, чуть ниже или выше pstree
на графике.Это также включает третий метод: jobs
встроенная оболочка.
Для восстановления из <C-z>
вы должны использовать fg
(также работает один %
в zsh и bash), который меньше набиратьзатем exit
(но более <C-d>
).