iTerm2 和 tmux:在当前选项卡的工作目录中打开新选项卡



当我使用 iTerm2 和 tmux 在远程 shell 上打开一个新选项卡(通过 ⌘T)时,我几乎总是希望新选项卡具有与当前选项卡相同的工作目录。我能做的最好的事情就是让 iTerm2 在我运行tmux -CCtmux -CC attach的同一目录中打开新选项卡。(可以通过导航到"首选项"→"配置文件"→"常规"→"工作目录"来配置此行为。

此目录不一定是当前选项卡的工作目录。有什么方法可以获得我正在寻找的行为吗?我在网上搜索了一段时间,但找不到任何有用的信息。

使用 Iterm2 时,如果您希望通过 ⌘T 在与当前选项卡相同的目录中打开新选项卡,则在首选项下的配置文件中有一个选项可用。

从 iTerm2 主菜单:

Iterm2 -> Preferences -> Profiles -> General -> Working Directory -> Reuse previous session's directory

如果你使用的是ZSH,你可以尝试这样的东西;

function tab() {
  local command="cd \"$PWD\"; clear; "
  (( $# > 0 )) && command="${command}; $*"
}

如果您使用的是 bash,我不确定等效物是什么。此外,如果您使用的是prezto或Oh-My-ZSH,则选项卡功能已经内置。

更新

看了一下prezto是如何做到的,这应该是完整的解决方案

local command="cd \"$PWD\""
(( $# > 0 )) && command="${command}; $*"
the_app=$(
  osascript 2>/dev/null <<EOF
    tell application "System Events"
      name of first item of (every process whose frontmost is true)
    end tell
EOF
)
[[ "$the_app" == 'iTerm' ]] && {
  osascript 2>/dev/null <<EOF
    tell application "iTerm"
      set current_terminal to current terminal
      tell current_terminal
        launch session "Default Session"
        set current_session to current session
        tell current_session
          write text "${command}"
        end tell
      end tell
    end tell
EOF
}

它使用AppleScript的CLI,似乎对我来说工作正常。

使用 tmux,一种解决方案是在.bash_alias中设置alias itab='open . -a iterm'

相关内容

  • 没有找到相关文章

最新更新