如何在两次打开文件时从屏幕内部切换到现有的 vim 实例

如何在两次打开文件时从屏幕内部切换到现有的 vim 实例

当我使用屏幕和 vim 处理许多文件时,我经常尝试打开一个已经打开的文件。

我必须使用 ctrl-space 手动在屏幕窗口之间切换,然后按 ctrl-g 直到找到正确的窗口。

是否可以自动切换到正确的窗口?..

答案1

使用这个 /usr/local/bin/vi:

#!/bin/sh
VIM_PPID=$(ps -Af | grep " vim $1\$" | head -n 1 | awk '{print $3}')
if [ -n "$VIM_PPID" ] ; then
  _WINDOW=$(tr '\0' '\n' < /proc/$VIM_PPID/environ | grep ^WINDOW= | cut -f 2 -d '=')
  VIMSHELL_PPID=$(ps -Af | awk '/^[^ ]+ +'$VIM_PPID' +/{print $3}')
  MYSHELL_PPID=$(ps -Af | awk '/^[^ ]+ +'$PPID' +/{print $3}')
  if [ "$MYSHELL_PPID" = "$VIMSHELL_PPID" ] ; then
    screen -X select $_WINDOW
    exit
  fi
fi
exec /usr/bin/vim $@

谢谢此回复

相关内容