Jestem nowy w tmux i próbuję dowiedzieć się, jak edytować konfigurację, aby okna z vimem były otwarte na pasku zadań, a nie jako #:vim
, ale jako cokolwiek, nazwa plik otwarty w vim to
(ie "#:filename.php")
. Wydaje się, że powinno to być powszechne, ale moje poszukiwania - foo zawodzi.tmux tabs z nazwą pliku otwartego w vim
Odpowiedz
Oto częściowa odpowiedź. Można go poprawić, ale nie mam czasu, aby go teraz rozwiązać.
umieścić następujące informacje w swojej .vimrc
:
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%"))
Istnieją inne zdarzenia (patrz :help autocmd-events
w vim), które mogą być używane do obsługi również. Jedną z rzeczy, o której nie wiedziałem, jest zmiana nazwy okna, jeśli w każdym z dwóch okien otwarte jest jedno wystąpienie vim
, a ty zmieniasz z jednego panelu na drugi. vim
nie jest świadomy działania w tmux
, więc nie są wywoływane żadne zdarzenia.
Musiałem zmodyfikować to, aby użyć expand(), aby uzyskać znak procentowy do rozwinięcia do nazwy okna, w przeciwnym razie po prostu otrzymałem "%" jako nazwę mojego okna. Tak było z vim 7.3. Tj .: autocmd BufReadPost, FileReadPost, BufNewFile * system wywołań ("tmux rename-window". Expand ("%")) – Von
Znalazłem przy korzystaniu z wielu paneli lub okien, lub zbiegiem, potrzebowałem dodać BufEnter do listy zdarzeń utrzymywanie tytułu podczas przemieszczania się między buforami. – Von
expand ("%: t") wstawiłaby nazwę pliku podczas rozwijania ("%") wyświetla pełną ścieżkę. – Nobu
Jest to możliwe! Chciałem podzielić się tą odpowiedzią, ponieważ szukałem jej od dłuższego czasu. Nareszcie mam czas, aby sam to wdrożyć. Umieścić następujące informacje w swojej .vimrc
:
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
Będzie ustawić tytuł terminala tylko tytuł dokumentu Obecnie w centrum uwagi (%t
podpórek tytule dokumentu bez ścieżki). Dzięki zdarzeniu BufEnter
tytuł terminala zmienia się za każdym razem, gdy przełączasz fokus na inny dokument. Również po opuszczeniu Vima, jest on przywracany do pierwotnego stanu. Put (lub wymienić) dodaje się w swojej .tmux.conf
:
set-window-option -g window-status-current-format "[#I #W#T]"
set-window-option -g window-status-format "[#I #W#T]"
Nie jest konieczne, aby skopiować go dokładnie, ale wygląda tak:
[1 vim .tmux.conf][2 bash]...
The I
oznacza liczbę okien. Numer W
oznacza bieżącą aplikację, a nazwa T
oznacza tytuł terminalu. Później używamy do pokazania bieżącego pliku otwartego w vim. Tytuł terminal jest zawsze ustawiony (mój terminalu bash zawsze pokazuje nazwę hosta, który nie muszę widzieć w moich opisach pasku stanu), tak, aby tylko pokazać, gdy vim biegnie dodać następujące do .bashrc
:
PROMPT_COMMAND='echo -ne "\033]0;\007"'
Dotyczy to powłoki bash, której używam. PROMPT_COMMAND jest oceniany tuż przed wyświetleniem Twojego monitu na terminalu. Polecenie echo ustawia tytuł terminala na zero. Tak więc dzieje się tak za każdym razem, gdy otrzymasz monit z powrotem od aplikacji, które mogły zmienić tytuł. Inne powłoki mogą wymagać innej konfiguracji ...
Nie będę używał tmux rename-window
, ponieważ ustawia tytuł tak długo, jak okna istnieją. Będziesz musiał wywołać to przy każdym uruchomieniu aplikacji. Przedstawione podejście zachowuje dynamikę, ponieważ działa z wieloma oknami w oknie i wieloma podzielonymi ekranami/plikami otwartymi w vimie.
Próbowałem tego bez żadnego szczęścia. Jakieś wskazówki dotyczące debugowania? Zrobiłem restart tmux. –
To nie wystarcza, aby kontynuować, ale najlepsze domysły, że nie używasz bash jako domyślnego terminala. TMUX może być zmuszony do użycia bashu poprzez umieszczenie "set-option -g default-shell/bin/bash" w twoim ".tmux.conf". Być może nie widzisz paska stanu, który można naprawić, dodając "set-option -g status on". Trochę szczęścia? – gospes
'autocmd BufEnter * let & titlestring = ''. expand ("%: t") "nie działa dla mnie w tmux. Jak zasugerował @Phluks, użyłem podejścia 'tmux rename-window', kiedy znajduje się wewnątrz tmux. – studgeek
Dzięki dla wielkich facetów wejściowymi oszczędza mi wiele wpisywać :-)
I połączeniu dwóch poprzednich odpowiedzi w jeden, który mi się podoba.
autocmd BufEnter * call system("tmux rename-window " . expand("%:t"))
autocmd VimLeave * call system("tmux rename-window bash")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
Pierwsza i sedondowa linia dla tmux, a trzecia i czwarta dla normalnego użytku terminalowego. Nie musisz ponownie uruchamiać tmux, ponieważ jest to vim, który bezpośrednio aktualizuje tmux.
Dwie poprzednie odpowiedzi mi nie pasowały, tylko ta jedna. Czemu? – fiatjaf
Świetne odpowiedzi tutaj, ale nadal nie mogłem go uruchomić tak, jak chciałem, co jest: 1) Zmień nazwę okna TMUX na otwarcie vim 2) Po wyjściu. przywrócić go do poprzedniego nazwiska po zakończeniu osiągnąłem go z następującymi liniami 3 vimrc:
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%:t"))
let tmuxtitle = system("tmux display-message -p '#W'")
autocmd VimLeave * call system("tmux rename-window " . shellescape(tmuxtitle))
Działa dobrze, z wyjątkiem buforów bez nazwy pliku. Każdy pomysł, jak to naprawić? – PonyEars
Jako alternatywę dla innych odpowiedzi, które określają nazwę okna tmux, można mieć vim ustawić tytuł okienka tmux zamiast. Pozwala to zachować statyczną nazwę okna zdefiniowaną za pomocą tmux new-window -n <window-name>
, podczas gdy vim zmienia tytuł okna. Możesz użyć #T
w set-titles-string
, aby wyświetlić tytuł panelu, np. set-option -g set-titles-string "#W: #T"
wyświetli nazwę okna i okienka tmux.
konfiguracji vim przykład zmianę szyby tytuł:
" Teach vim the tmux escape sequences for changing pane title
" Note the "^[" should be a literal escape code (use `^v<esc>` to enter it)
set t_ts=^[]2;
set t_fs=^[\\
" Turn on setting the title.
set title
" The following causes vim to refresh the title each time we change buffers.
" Otherwise it will only set the title once at startup.
augroup RefreshTitle
autocmd!
" The concatenation of the colon is a hack to prevent vim from
" interpreting the string as a modeline.
autocmd BufEnter * let &titlestring = "vim" . ":" . expand("%:t")
augroup END
Uznanie vim.wikia.com dla informacji t_ts
i t_fs
i phluks do autokomendę.
FWIW, dla mnie po prostu "ustaw tytuł" i "set titlestring =% t" utrzymywały tytuł okna na czasie, gdy przełączałem bufory i nie potrzebowałem polecenia augroup/BufEnter. –
I przywrócić automatyczne tytuł okna na wyjściu vim:
autocmd VimLeave * call system("tmux setw automatic-rename")
Chciałbym również zasugerować, aby sprawdzić, czy prowadzimy pod tmux:
if exists('$TMUX')
autocmd BufEnter * call system("tmux rename-window '" . expand("%:t") . "'")
autocmd VimLeave * call system("tmux setw automatic-rename")
endif
- 1. Vim w OSX: Jak wkleić tekst z otwartego okna do otwartego pliku w vim?
- 2. Jak wyśrodkować zawartość otwartego pliku w vim?
- 3. Vim idzie walnięcie z tmux
- 4. Utwórz nowy plik w katalogu otwartego pliku w vim?
- 5. Wycinanie i wklejanie z vim i tmux
- 6. Vim odpowiednik otwartego prostokąta Emacsa
- 7. Uzyskaj ścieżkę z otwartego pliku w Pythonie
- 8. Lokalizacja otwartego pliku
- 9. vim w tmux zmiany koloru tła podczas stronicowania
- 10. Zapisywanie pliku z nazwą urządzenia
- 11. Utwórz katalog z nazwą UTF-8 w Vim
- 12. Konfigurowanie solarized colorscheme w terminalu gnome, tmux i vim
- 13. Jak uzyskać nazwę otwartego pliku?
- 14. Utwórz nową sesję tmux z sesji tmux
- 15. Jak zmienić nazwę otwartego pliku w Emacs?
- 16. Przenoszenie pliku w Vim
- 17. Jak wyłączyć keybinding w Tmux
- 18. python-request post z nazwą pliku Unicode
- 19. otworzyć plik z nazwą pliku Unicode?
- 20. Tabs w bloku
- 21. Catching Tabs w TextArea
- 22. błędy vim vim na starcie, gdy prowadzony w skorupkach ryb
- 23. Zapisz plik z nową nazwą pliku: dołącz do istniejącej nazwy pliku
- 24. Strace wyjście Tmux przekierowane do pliku
- 25. vim skopiuj i wklej za pośrednictwem udostępnionego pliku
- 26. Eclipse 3.8 - Zapobieganie Nazwa pliku Obcinanie w Edytorze Tabs
- 27. Jak wyprowadzić powód otwartego pliku PHP
- 28. kółko myszy nie przewija się w tmux
- 29. nasłuchiwać „otwartego pliku z mojej aplikacji Java” zdarzenie na oknach
- 30. Generowanie pliku Excel Excel otwartego pakietu Office z javascript
używam podzielić los w vim. jeśli otworzę 10 plików w buforze i podzielę 4 pliki na 4 okna, powiesz mi, co chcesz pokazać w etykiecie okna tmux? – Kent
@Kent Załóżmy, że w jednym oknie otwarty jest tylko jeden plik. Czy można to zrobić? –
Kent: możesz zdefiniować odpowiednie autokomendy w Vimie, aby wywoływać 'tmux rename-window' z nazwą pliku w aktywnym buforze. – chepner