it-swarm-tr.com

Mevcut dizinde tmux'da yeni bir pencere nasıl oluşturulur?

Bir new-window çalışma dizini şu anda içinde bulunduğum şekilde ayarlanmış. Önemliyse zsh kullanıyorum.

217
Shrikant Sharat

tmux 1.9'dan başlayarak default-path Seçeneği kaldırıldı, bu nedenle -c Ve new-window İle split-window (ör. c, " ve % bağlantılarını yeniden eklemek için
-c '#{pane_current_path}'). Ayrıntılar için bu soruya verilen diğer cevaplara bakınız.


İlgili bir özellik Şubat 2012 başında tmux SVN bagajına indi. tmux bu kodu içeren yapılarda, tmuxnew-window işlevini çağıran anahtar bağlamaları, geçerli bölmenin etkin işlemleriyle aynı geçerli çalışma dizinine sahip yeni bir pencere oluşturur (default-path oturum seçeneği boş olduğu sürece, varsayılan olarak). Aynı şey, bir bağlayıcı aracılığıyla çağrıldığında split-window Komutu tarafından oluşturulan bölme için de geçerlidir.

Bu, platforma özel kod kullanır, bu nedenle şu anda yalnızca belirli işletim sistemleri desteklenmektedir: Darwin (OS X), FreeBSD, Linux, OpenBSD ve Solaris.

Bu, bir sonraki tmux (1.7?) Sürümünde mevcut olmalıdır.


tmux 1.4 ile, genellikle sadece

tmux neww

i̇stediğiniz geçerli çalışma dizinine zaten sahip olan bir Kabukta.

Bununla birlikte, aynı geçerli çalışma dizinine sahip birçok pencere oluşturmayı bekliyorsam (veya bunları normal <prefix> c anahtar bağlamasıyla başlatmak istiyorum), sonra default-path Oturum seçeneği üzerinden

tmux set-option default-path "$PWD"

i̇stediğiniz geçerli çalışma dizinine zaten sahip olan bir Kabukta (bunu herhangi bir dizinden açıkça yapabilirsiniz ve bunun yerine değeri belirtebilirsiniz).

default-path Boş olmayan bir değere ayarlanırsa, değeri geçerli çalışma dizinini tmux neww Komut satırı çağrılarından “devralmak” yerine kullanılır.

tmux SSS , “Geçerli pencereyle aynı dizinde nasıl yeni bir pencere açabilirim?” Başlıklı bir giriş var. başka bir yaklaşımı tanımlayan; olsa biraz kıvrık.

150
Chris Johnsen

Geçerli (1.9a) Tmux kılavuz sayfası, -c start-directory Ve new-window Dahil olmak üzere bazı komutlar için isteğe bağlı split-window Parametresini listeler. Ayrıca, pane_current_path Biçimini ifade eden Current path if available Biçim değişkenini de içerir.

Bunları birleştirerek, geçerli çalışma diziniyle yeni bir pencere açabiliriz.
new-window -c "#{pane_current_path}"
Geçerli yolun boşluk içermesi durumunda tırnak işareti gereklidir.

Geçerli bölmeyi dikey olarak bölmek istiyorsanız,
split-window -c "#{pane_current_path}"
veya yatay bir bölme için
split-window -h -c "#{pane_current_path}"

Tuş bağlantılarının varsayılan olarak geçerli çalışma diziniyle yeni bölümleri ve pencereleri açmasını sağlamak için, .tmux.conf Öğenize aşağıdakileri ekleyin. " Etrafındaki tırnak işaretleriyle Tmux'a bir dize başlamamasını değil, " tuşuna basın.

bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
293
Simon Kohlmeyer

Evet, new-window -c "#{pane_current_path}". ~/.tmux.conf kalıcı yapmak için (varsayılan tuş bağlamalarını varsayalım):

bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

default-path yol ayarı, yukarı akış kodundan kaldırıldı ve bu taahhüt mesajında ​​-c "#{pane_current_path}" veya -c "$PWD içinde new-window ve split-window komutları.

Ben de bu soruya cevap verdim yinelenen sor .

43
mmoya

Tmux'un son sürümleriyle (v1.8, ancak belki de v1.7'de):

tmux new-window -c "$PWD"
10
mislav

Bunları bağlayıcı olarak koymaya çalıştığımda diğer cevaplar benim için çalışmıyor (özellikle tmux split-window -c). Ama hem yeni pencere hem de bölünmeler için çalışan bir yıldan fazla süredir kullandığım kendi çözümümü oluşturdum:

~/.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"

En azından $ (tmux -V) 1.8 ile çalışır. Gösteri ortamı komutuna sahip olmayan eski tmux'lar için çalışan bir sürüm için yorumlanmamış satırlara here bakın.

3
Erik Westrup

tmux bunu 1.8 sürümünde yaptı ancak 1.9'da bu özellik -c bayrağının kullanılması lehine kaldırıldı.

Bu çözülebilir, ancak yeniden bağlanabilir new-window, Ancak başka bir şey çalıştırmak istediğinizde çok garip hale gelir: neww man tmux Yazmak yerine neww -c "#{pane_current_path}" man tmux Yazmanız gerekir. büyük olasılıkla yapmak istemezsiniz.

Diğer adların kullanılmasına izin vermek, 'mod', değişkenler, döngüler vb.'de birden fazla komut bağlamak için tmux'a uygun bir komut dosyası dili eklemek için bir tmux modu (yazarım) var ... Ve ayrıca, bu davranışı geri getiriyor : yeni klasör ve pencereler geçerli dizinde açılır.

Buradaki kaynaklardan oluşturulabilir: http://ershov.github.io/tmux/

0
Yuriy Ershov