Odpowiedzi:
Aby przeszukać tmuxbieżące okno w buforze historii, naciśnij Ctrl-, b [aby wejść copy mode.
Jeśli używasz powiązań klawiszy emacs (domyślne), naciśnij Ctrl- snastępnie wpisz ciąg, aby wyszukać i naciśnij Enter. Naciśnij, naby ponownie wyszukać ten sam ciąg. Naciśnij Shift-, naby wyszukać do tyłu. Naciśnij Escapedwukrotnie, aby wyjść copy mode. Możesz użyć Ctrl- rdo wyszukiwania w odwrotnym kierunku. Zauważ, że skoro tmuxma kontrolę nad klawiaturą w copy mode, Ctrl- sdziała niezależnie od stty ixonustawienia (które chcę mieć, stty -ixonaby umożliwić wyszukiwanie do przodu w Bash).
Jeśli używasz powiązań klawiszy vi ( Ctrl- b:set-window-option -g mode-keys vi), naciśnij, /a następnie wpisz ciąg, który chcesz wyszukać, i naciśnij Enter. Naciśnij, naby ponownie wyszukać ten sam ciąg. Naciśnij Shift-, naby wyszukiwać wstecz jak w trybie emacs. Naciśnij qdwukrotnie, aby wyjść copy mode. Możesz użyć ?do wyszukiwania w odwrotnym kierunku.
Jeśli chcesz przełączyć się na okno oparte na czymś w nim wyświetlanym (obejmuje to także nazwy i tytuły okien, ale nie historię), (zaczynając od otwarcia więcej niż jednego okna) naciśnij Ctrl- b fnastępnie wpisz ciąg, który chcesz wyszukać, i naciśnij Enter. Zostaniesz przełączony do okna zawierającego ten tekst, jeśli zostanie znaleziony. Jeśli pasuje więcej niż jedno okno, zobaczysz listę do wyboru.
EDITORlub VISUAL) na żądany styl przed rozpoczęciem tmux.
set-window-option -g mode-keys viw moim .tmux.conf. Byłem jednak ciekawy alternatywnej zmiennej środowiskowej i nie mogłem jej uruchomić. Czy jest to zmienna środowiskowa powłoki, czy zmienna środowiskowa tmux, którą należy ustawić w pliku conf?
VISUAL=vi tmux
Wejdź w tryb kopiowania i rozpocznij wyszukiwanie za jednym razem
bind-key / copy-mode \; send-key ?
pozwala zrobić tylko:
Ctrl + B /
i zacznij wpisywać wyszukiwane hasło.
Zrzuć do pliku i użyj vim
Gdy sprawy się bardziej angażują, chcę po prostu użyć odpowiedniego edytora: https://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
Teraz Pzrzuca bufor do pliku, a następnie po prostu:
vim /tmp/tmux
Testowane w tmux 2.6.
/tmp/tmux)?
Możesz użyć vima do przeglądania / edycji / wyszukiwania / zapisywania dziennika ekranu, składania dziennika przy każdym znaku zachęty:
tmux capture-pane -pS -1000000 |
vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1" -
Dostosuj wyrażenie regularne zgodnie z poleceniem, użyj czterech odwrotnych ukośników dla każdego odwrotnego ukośnika w wyrażeniach regularnych.
Lub umieść funkcję vim w ~ / .vimrc:
command! MoshFoldTmuxLog :setl fen fdm=expr
\ fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1
A w ~ / .bashrc dodaj datę do monitu, jeśli masz wiele dzienników do przeszukania. na przykład
PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'
Oto rozwiązanie, które znalazłem.
Możesz również zmienić docelową ścieżkę i nazwę pliku:
# Save screen content to file
bind p command-prompt -p 'Save history to:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
Po przeładowaniu pliku konfiguracyjnego tmux możesz prefix pw moim przypadku nacisnąć. Ctrl+a p
Możesz zmienić bind ppreferowaną kombinację klawiszy.
Pierwsza moja nie działała, ponieważ nadpisywałem bind pw innym wierszu, więc to skomentowałem.
tmux(tmux -V)? Uważam, że zostało to dodane w wersji 0.9.