lsof /path/to/.file.swp
покажет идентификатор процесса нарушающего процесса vim. Если вы хотите написать скрипт, используйте pid=$(lsof -Fp "$swp_file"); pid=${pid#p}
чтобы получить только идентификатор процесса.
Затем ps 12345
где 12345 - это идентификатор процесса, покажет некоторую информацию о процессе, в частности, о том, на каком tty он выполняется (ps -o tty= -p $pid
в скрипте). Tty однозначно идентифицирует окно tmux (при условии, что процесс выполняется внутри tmux), но я не знаю, как перейти от имени tty к сеансу tmux.
Что бы дать вам сеанс tmux - это значение переменной окружения TMUX
в процессе vim. Номер сеанса - это последний номер после последней запятой.
У большинства объединений есть способ узнать среду процесса, но этот способ отличается в разных вариантах Unix. В Linux вы можете использовать </proc/$pid/environ grep -z '^TMUX='
чтобы показать значение $TMUX
в процессе $pid
, поэтому вы можете извлечь номер сеанса как $(</proc/$pid/environ grep -z '^TMUX=' | sed 's/.*,//')
.