fish shell - 在屏幕的窗口标题中显示当前命令

时间:2014-07-22 10:41:21

标签: gnu-screen fish

我希望当前命令显示在屏幕标题(或tmux)中。

我尝试了以下设置,但它不起作用。

我怎样才能让它发挥作用?

.screenrc

shelltitle "$ |fish"
shell /usr/local/bin/fish

的.config /鱼/ config.fish

set -x PS1 '\033k\033\\[\u@\h \W]\$ '

4 个答案:

答案 0 :(得分:6)

对于鱼2.1.0版,您只需编辑〜/ .config / fish / functions / fish_title.fish

function fish_title
    hostname
end

对于版本1.23.1,这似乎不起作用。如果目录不存在,请先创建它们:

mkdir -p~ / .config / fish / functions /

答案 1 :(得分:1)

.config/fish/functions/fish_title.fish中对我有用的东西:

function fish_title
    # this one sets the X terminal window title
    # argv[1] has the full command line
    echo (hostname): (pwd): $argv[1]

    switch "$TERM"
    case 'screen*'

      # prepend hostname to screen(1) title only if on ssh
      if set -q SSH_CLIENT
        set maybehost (hostname):
      else
        set maybehost ""
      end

      # inside the function fish_title(), we need to
      # force stdout to reach the terminal
      #
      # (status current-command) gives only the command name
      echo -ne "\\ek"$maybehost(status current-command)"\\e\\" > /dev/tty
    end
end

答案 2 :(得分:0)

我认为你正在寻找fish_title。请参阅documentation here

你可以这样做:

function fish_title
    echo $_ ' '
    pwd
end
funcsave fish_title

(注意你只是在提示符下运行它 - 不要把它放在配置文件中。)

答案 3 :(得分:0)

感谢您的回答。 最后,这使它工作了!

<强> .screenrc

shelltitle "$ |fish"
shell /usr/local/bin/fish

<强>的.config /鱼/ config.fish

function fish_prompt
    echo -ne '\033k'
    echo -ne $argv
    echo -ne '\033\\'
    echo -ne '$ '
end