Odpowiedzi:
Aby przeszukać tmux
bieżą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 tmux
ma kontrolę nad klawiaturą w copy mode
, Ctrl- sdziała niezależnie od stty ixon
ustawienia (które chcę mieć, stty -ixon
aby 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.
EDITOR
lub VISUAL
) na żądany styl przed rozpoczęciem tmux
.
set-window-option -g mode-keys vi
w 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 P
zrzuca 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 p
w moim przypadku nacisnąć. Ctrl+a p
Możesz zmienić bind p
preferowaną kombinację klawiszy.
Pierwsza moja nie działała, ponieważ nadpisywałem bind p
w innym wierszu, więc to skomentowałem.
tmux
(tmux -V
)? Uważam, że zostało to dodane w wersji 0.9.