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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iTerm2和tmux:在当前选项卡的工作目录中打开新选项卡相关的知识,希望对你有一定的参考价值。

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

该目录不一定是当前选项卡的工作目录。有没有办法得到我正在寻找的行为?我在网上搜索了一段时间,但找不到任何有用的信息。

答案

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

从iTerm2主菜单:

Iterm2 -> Preferences -> profiles -> working directory -> Reuse Previous Session Directory

另一答案

如果您使用ZSH,您可以尝试这样的事情;

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

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

UPDATE

看看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
}

它使用CLI for AppleScript,似乎对我来说很好。

另一答案

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

以上是关于iTerm2和tmux:在当前选项卡的工作目录中打开新选项卡的主要内容,如果未能解决你的问题,请参考以下文章

在终端(iTerm2)中留下 tmux 回滚

markdown 在iTerm2备忘单中的tmux

如何在 Kendo UI TabStrip 中获取对当前选定选项卡的引用?

tmux 使用 tmux-resurrent 保存当前工作环境

tmux 使用 tmux-resurrent 保存当前工作环境

tmux使用