Il est possible d'ouvrir a new-window
avec son répertoire de travail défini sur celui dans lequel je suis actuellement. J'utilise zsh , si cela compte.
Il est possible d'ouvrir a new-window
avec son répertoire de travail défini sur celui dans lequel je suis actuellement. J'utilise zsh , si cela compte.
Réponses:
A partir de tmux 1.9 l' default-path
option a été supprimée, de sorte que vous devez utiliser l' -c
option en new-window
, et split-window
(par exemple reconsolidation la c
, "
et les %
liaisons à inclure
-c '#{pane_current_path}'
). Voir d'autres réponses à cette question pour plus de détails.
Une fonctionnalité pertinente a atterri dans la jonction SVN de tmux au début du mois de février 2012. Dans les versions tmux incluant ce code, les liaisons de clé tmux appelantesnew-window
créeront une nouvelle fenêtre avec le même répertoire de travail actuel que les processus actifs du volet actuel (tant que la default-path
session est active). l’option est vide, c’est par défaut). Il en va de même pour le volet créé par la split-window
commande lorsqu'il est appelé via une liaison.
Ceci utilise un code spécifique à la plate-forme, de sorte que seuls certains systèmes d'exploitation sont actuellement pris en charge: Darwin (OS X), FreeBSD, Linux, OpenBSD et Solaris.
Cela devrait être disponible dans la prochaine version de tmux (1.7?).
Avec tmux 1.4, je n’utilise généralement que
tmux neww
dans un shell qui a déjà le répertoire de travail actuel souhaité.
Si, toutefois, je prévois avoir besoin de créer plusieurs fenêtres avec le même répertoire de travail actuel (ou si je veux pouvoir les démarrer avec la c
liaison de clé <préfixe> habituelle ), alors je mets l' default-path
option de session via
tmux set-option default-path "$PWD"
dans un shell qui a déjà le répertoire de travail actuel souhaité (bien que vous puissiez évidemment le faire depuis n'importe quel répertoire et spécifier simplement la valeur à la place).
Si default-path
est défini sur une valeur non vide, sa valeur sera utilisée au lieu d’hériter du répertoire de travail en cours à partir des appels de ligne de commande de tmux neww
.
La FAQ de tmux a une entrée intitulée «Comment puis-je ouvrir une nouvelle fenêtre dans le même répertoire que la fenêtre actuelle?» Qui décrit une autre approche; c'est un peu compliqué cependant.
/proc/PID/cwd
sur Linux)). Il existe une solution partielle dans une entrée de la FAQ de tmux (le shell enregistre son cwd lorsqu’il imprime une invite, puis lie une clé qui démarre un nouveau shell dans le répertoire enregistré).
default-path
option de session (si celle-ci est définie). La FAQ de tmux contient une entrée décrivant un moyen de lier une clé qui ouvre une nouvelle fenêtre avec le cwd du shell exécuté dans la fenêtre actuelle ("Comment puis-je ouvrir une nouvelle fenêtre dans le même répertoire que la fenêtre actuelle?") , mais la méthode est assez compliquée. La même chose pourrait probablement être faite pour split-window
et new-session
(au lieu de neww
).
La page de manuel actuelle (1.9a) de Tmux répertorie un -c start-directory
paramètre facultatif pour certaines commandes, notamment new-window
et split-window
. Il contient également la variable de format pane_current_path
, qui fait référence à
Current path if available
.
En les combinant, nous pouvons ouvrir une nouvelle fenêtre avec le répertoire de travail actuel à l'aide de
new-window -c "#{pane_current_path}"
La citation est nécessaire dans le cas où le chemin actuel contient des espaces.
Si vous souhaitez diviser le volet actuel verticalement, utilisez
split-window -c "#{pane_current_path}"
ou, pour une division horizontale
split-window -h -c "#{pane_current_path}"
Pour que les raccourcis clavier ouvrent de nouvelles divisions et fenêtres avec le répertoire de travail actuel par défaut, ajoutez ce qui suit à votre .tmux.conf
. Les "
guillemets environnants indiquent à Tmux qu'il ne devrait pas commencer une chaîne, mais plutôt lier la "clé.
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
prefix
- :
, puis tapezsource ~/.tmux.conf
tmux source-file .tmux.conf
.
Oui, utilisez new-window -c "#{pane_current_path}"
. Vous pouvez ajouter ce qui suit à votre ~/.tmux.conf
pour le rendre persistant (d'assumer les associations de touches par défaut):
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
Le default-path
réglage de la trajectoire a été retiré à partir du code en amont et l' auteur de tmux recommandé par le fait que le message de validation en utilisant soit -c "#{pane_current_path}"
ou -c "$PWD
dans le new-window
et les split-window
commandes.
J'ai également répondu à cette question en double .
Avec les versions récentes de tmux (v1.8, mais peut-être aussi dans v1.7):
tmux new-window -c "$PWD"
tmux split-window -v -c "$PWD"
$PWD
ne semble pas fonctionner pour moi dans tmux 1.9a. Je devais utiliser pane_current_path
comme suggéré ci-dessus.
Les autres réponses ne fonctionnent pas pour moi lorsque j'essaie de les définir comme des liaisons (spécifiquement tmux split-window -c
). Mais j'ai créé ma propre solution que j'utilise depuis plus d'un an et qui fonctionne à la fois pour new-window et les divisions:
~/.bashrc
:
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
~/.tmux.conf
:
unbind-key c
bind-key c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key C new-window
bind-key - run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key | run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"
Fonctionne au moins avec $ (tmux -V) 1.8. Voir les lignes commentées ici pour une version fonctionnant pour les anciens tmux n'ayant pas la commande show-environment.
tmux l’a fait dans la version 1.8 mais en 1.9 cette fonctionnalité a été supprimée au profit de -c
flag.
Cela peut être résolu en liant new-window
mais si vous voulez utiliser autre chose, cela devient trop verbeux: au lieu de taper, neww man tmux
vous devrez taper neww -c "#{pane_current_path}" man tmux
ce que vous ne voudrez probablement pas faire.
Il existe un mod de tmux (j'en suis l'auteur) pour ajouter un langage de script approprié à tmux afin de permettre l'utilisation d'alias, la liaison de plusieurs commandes en "mode", des variables, des boucles, etc. : de nouvelles fenêtres et volets sont ouverts dans le répertoire en cours.
Il peut être construit à partir de sources ici: http://ershov.github.io/tmux/
<prefix>c
lecture du répertoire de travail de l’instance de shell sous-jacente (le cas échéant) et de la définirdefault-path
avant l’exécutionnew-window
. Ou est-ce trop demander à tmux :)