linha de status do tmux e formato do caminho atual

2

Tmux tem uma opção para ter o #{pane_current_path} como um nome para o painel atual na linha de status. Isso é ótimo, mas tem duas curtas quedas para mim:

  1. $HOME não é exibido como ~ .
  2. Eu realmente preciso apenas do último nome do diretório, não do caminho completo de / . Portanto, por exemplo, /home/ook/thingy/src seria exibido apenas como src ou ~/t/src .

Existe um Tmux comando que faz isso?

Pontos de bônus se funcionar com powerline também.

    
por Sardathrion 05.02.2016 / 15:04

1 resposta

1

Eu tentei encontrar algo semelhante recentemente, no meu caso, para configurar as informações da janela (para o comando choose-window do Tmux) para algo mais informativo do que o padrão.

Na página man, as informações relevantes parecem estar no FORMATOS seção, que também é usada pelos comandos status-{left,right} :

FORMATS

Certain commands accept the -F flag with a format argument. This is a string which controls the output format of the command. Replacement variables are enclosed in ‘#{’ and ‘}’, for example ‘#{session_name}’. The possible variables are listed in the table below, or the name of a tmux option may be used for an option's value. Some variables have a shorter alias such as ‘#S’, and ‘##’ is replaced by a single ‘#’.

Conditionals are available by prefixing with ‘?’ and separating two alternatives with a comma; if the specified variable exists and is not zero, the first alternative is chosen, otherwise the second is used. For example ‘#{?session_attached,attached,not attached}’ will include the string ‘attached’ if the session is attached and the string ‘not attached’ if it is unattached, or ‘#{?automatic-rename,yes,no}’ will include ‘yes’ if automatic-rename is enabled, or ‘no’ if not.

A limit may be placed on the length of the resultant string by prefixing it by an ‘=’, a number and a colon. Positive numbers count from the start of the string and negative from the end, so ‘#{=5:pane_title}’ will include at most the first 5 characters of the pane title, or ‘#{=-5:pane_title}’ the last 5 characters. Prefixing a time variable with ‘t:’ will convert it to a string, so if ‘#{window_activity}’ gives ‘1445765102’, ‘#{t:window_activity}’ gives ‘Sun Oct 25 09:25:02 2015’. The ‘b:’ and ‘d:’ prefixes are basename(3) and dirname(3) of the variable respectively. A prefix of the form ‘s/foo/bar/:’ will substitute ‘foo’ with ‘bar’ throughout.

In addition, the first line of a shell command's output may be inserted using ‘#()’. For example, ‘#(uptime)’ will insert the system's uptime. When constructing formats, tmux does not wait for ‘#()’ commands to finish; instead, the previous result from running the same command is used, or a placeholder if the command has not been run before. Commands are executed with the tmux global environment set (see the ENVIRONMENT section).

Depois de algumas tentativas, parece que não consigo fazer com que o método% co-de% -like integrado funcione com o nome do diretório sed . Como você também pode usar qualquer comando shell ou variáveis ambientais, você pode simplesmente usar alguma variação de

#{pane_current_path}

Eu não sei sobre compatibilidade com Powerline, já que no momento não estou usando.

    
por 12.02.2016 / 19:56

Tags