tutorial texto mac how copiar comandos tmux

texto - Cómo cambiar automáticamente el nombre de tmux windows al directorio actual



tmux tutorial (9)

Me gustaría tener tmux para cambiar automáticamente el nombre de la ventana con el directorio de trabajo actual (cwd). Como es por defecto, nombra la pestaña / ventana como el nombre del proceso actual, como zsh o vim.

Cuando abro una nueva ventana en tmux, el nombre es reattach-to-use-namespace y luego cambia a zsh .

Estoy en OS X 10.10.2, uso zshell y tengo tmux 1.9a.

Para que quede claro, no quiero la ruta completa en el nombre de la ventana, solo el directorio actual, así que por ejemplo, quiero projectName , no /Users/username/Development/projectName .

Si quieres ver mi tmux.conf actual, aquí está .


Agregar esta configuración a su archivo ~ / .tmux.conf debería funcionar:

set-option -g window-status-current-format ''#I:#{pane_current_path}#F'' set-option -g window-status-format ''#I:#{pane_current_path}#F'' set-option -g status-interval 1

Depende sin embargo de su versión Tmux. No pude hacerlo funcionar en 1.9a3 (en Cygwin), pero con Tmux 1.8 en Ubuntu (en Vagrant) funcionó bien.


Ampliando lo que escribió Josef, puede poner el nombre base del directorio en el estado usando un fragmento de shell:

# be sure to see note* below set -g window-status-format ''#I:#(pwd="#{pane_current_path}"; echo ${pwd####*/})#F'' set -g window-status-current-format ''#I:#(pwd="#{pane_current_path}"; echo ${pwd####*/})#F'' # status bar updates every 15s by default**, change to 1s here # (this step is optional - a lower latency might have negative battery/cpu usage impacts) set -g status-interval 1

* Tenga en cuenta que lo que sería ${pwd##*/} se escapará a ${pwd####*/} ya que # tiene un significado especial en la cadena de formato.

** Vea here para un ejemplo de configuración tmux por defecto.


Con tmux 2.3+ , el modificador de formato b: muestra el "nombre base" (o "cola") de una ruta.

set-option -g status-interval 5 set-option -g automatic-rename on set-option -g automatic-rename-format ''#{b:pane_current_path}''

La sección de FORMATS de man tmux describe otros prefijos para modificar el resultado #{} , como d: e incluso s/foo/bar/:

Con tmux anterior a 2.3 , se puede usar el comando de shell de basename su lugar.

set-option -g status-interval 5 set-option -g automatic-rename on set-option -g automatic-rename-format ''#(basename "#{pane_current_path}")''


Esto no responde estrictamente a su pregunta, no cambia automáticamente el nombre de una sesión tmux existente al directorio de trabajo actual.

Más bien, al crear una nueva sesión, nombra esa sesión después del directorio de trabajo actual.

Esto es lo que hice:

a

~ / .aliases

añadir

alias tm=''tmux new -s `basename $PWD`''

Abra una nueva ventana de terminal y escriba:

tm

Esto ahora crea una nueva sesión tmux que lleva el nombre del directorio de trabajo actual.

Nota: Esto se basa en el basename que no existe en Windows.


Estoy seguro de que quieres usar esto:

set -g status-left ''#{pane_current_path} ''


Estoy usando zsh hook para eso

Agregue lo siguiente en ~/.zshrc

precmd () { if [ -n "$TMUX" ]; then tmux set-window-option -q window-status-format "#[fg=cyan bg=cyan] | #[fg=white, bg=cyan] #I | ${PWD##/*/} #[fg=cyan, bg=cyan] | " tmux set-window-option -q window-status-current-format "#[fg=cyan, bg=cyan] | #[fg=white, bg=cyan] #I | ${PWD##/*/} #[fg=cyan, bg=cyan] | " fi }


Haga algo como esto en una sesión de tmux para el shell zsh:

setopt PROMPT_SUBST export PS1=$''/ek$(basename $(pwd))/e//> ''

Si alguien usa bash shell:

export PS1="/033k/$(basename /$(pwd))/033//> "

Puede agregar estos comandos en el archivo de inicialización del shell con la condición de que la variable env $TERM se establezca en el valor "screen"


Uso lo siguiente en ~ / .tmux.conf para lograr esto (trabajando en OSX, zsh, tmux-2.3):

set -g automatic-rename-format ''#{pane_current_path}'' set -g status-interval 5

Puede establecer el intervalo de estado en 1 para que responda más rápido a los directorios cambiantes.

De acuerdo con el registro de cambios ( https://raw.githubusercontent.com/tmux/tmux/master/CHANGES ), esto debería funcionar en tmux 1.9 en adelante.

Al usar ssh en una máquina CentOS con tmux 2.3, el nombre de la ventana no cambia hasta que presiono regresar en el nuevo panel, sin estar seguro de por qué sucede eso.


Mostrar los componentes N superiores

Mostrar solo el nombre base genera demasiada ambigüedad, pero los caminos llenos son demasiado desordenados, así que me conformé con:

the/last/path

en lugar de:

/a/very/long/the/last/path

o solo:

path

.tmux.conf :

set-window-option -g window-status-current-format ''#[fg=white,bold]** #{window_index} #[fg=green]#{pane_current_command} #[fg=blue]#(echo "#{pane_current_path}" | rev | cut -d''/'' -f-3 | rev) #[fg=white]**|'' set-window-option -g window-status-format ''#[fg=white,bold]#{window_index} #[fg=green]#{pane_current_command} #[fg=blue]#(echo "#{pane_current_path}" | rev | cut -d''/'' -f-3 | rev) #[fg=white]|''

Truco tomado de: Unix quitar parte de la ruta

Si eso todavía no resuelve la ambigüedad, voy por:

bind-key -r w choose-window -F ''#{window_index} | #{pane_current_command} | #{host} | #{pane_current_path}''

Probado en Tmux 2.1, Ubuntu 16.04.