tmux 쉘의 출력 버퍼 내에서 어떻게 검색 할 수 있습니까?


180

나는 이것을 작동시킬 수 없다. tmux 쉘의 버퍼를 어떻게 검색합니까?


1
tmux( tmux -V) 의 어떤 버전입니까 ? 나는 이것이 0.9 버전에서 추가되었다고 생각합니다.
Dennis Williamson

@Dennis 그것은 1.3-1입니다
NES

1
버전 찾기는 tmux -V이후 버전에서만 작동합니다. 우분투 / 데비안에서 당신은 할 수 있습니다 : dpkg -l | grep tmux
닐스 그랬지

답변:


275

복사 모드 검색

tmux히스토리 버퍼에서 현재 창 을 검색하려면 Ctrl- b [를 눌러 입력하십시오 copy mode.

emacs 키 바인딩 (기본값)을 사용하는 경우 Ctrl-를 s누른 다음 검색 할 문자열을 입력하고을 누르십시오 Enter. n같은 문자열을 다시 검색하려면 누릅니다 . 역 검색을하려면 Shift- n를 누르십시오 . 를 Escape두 번 눌러 종료 copy mode합니다. Ctrl- r를 사용 하여 반대 방향으로 검색 할 수 있습니다 . 이후 있습니다 tmux에서 키보드의 제어에 copy mode, Ctrl- s에 관계없이 작품 stty ixon(내가 같이가 좋아하는 설정 stty -ixon배쉬에서 검색을 앞으로 수 있도록).

vi 키 바인딩 ( Ctrl- b:set-window-option -g mode-keys vi)을 사용하는 경우을 누른 /다음 검색 할 문자열을 입력하고을 누릅니다 Enter. n같은 문자열을 다시 검색하려면 누릅니다 . emacs 모드에서와 같이 역 검색을하려면 Shift- n를 누르십시오 . 를 q두 번 눌러 종료 copy mode합니다. ?역방향으로 검색 하는 데 사용할 수 있습니다 .

창 찾기

창에 표시된 내용 (창 이름과 제목을 포함하지만 기록은 포함하지 않음)을 기준으로 창으로 전환하려면 (여러 창을 열어서 시작) Ctrl-을 b f누른 다음 검색 할 문자열을 입력하고을 누르십시오 Enter. 해당 텍스트가있는 경우 해당 텍스트가있는 창으로 전환됩니다. 둘 이상의 창이 일치하면 선택할 수있는 목록이 표시됩니다.


3
바인딩 스타일을 어떻게 설정합니까? (emacs vs vi)
Daniel Que

2
@DanielQue : tmux 매뉴얼 페이지를보고 "mode-keys"및 "status-keys"를 검색하십시오. 바인딩 스타일을 설정할 수있는 하위 명령입니다. 또는 시작하기 전에 환경 변수 ( EDITOR또는 VISUAL)를 원하는 스타일 로 설정하는 것이 더 간단 할 수 있습니다 tmux.
Dennis Williamson

6
고마워, 나는 그것과 함께 일하게 set-window-option -g mode-keys vi했다 .tmux.conf. 그러나 환경 변수 대안에 대해 궁금해서 작동하지 못했습니다. 쉘 환경 변수 또는 conf 파일에 설정해야하는 tmux 환경 변수입니까?
Daniel Que

2
@DanielQue : 쉘 환경 변수. 다음과 같이 tmux의 환경으로 내보내거나 배치해야합니다.VISUAL=vi tmux
Dennis Williamson

1
또한 정규식 검색은 아직 없습니다. 여기에 공개 문제가 있습니다. sourceforge.net/p/tmux/tickets/9
Elijah Lynn

7

복사 모드로 들어가서 한 번에 검색 시작

bind-key / copy-mode \; send-key ?

당신이 할 수 있습니다 :

 Ctrl + B /

검색어를 입력하십시오.

파일로 덤프하고 vim 사용

일이 더 복잡해지면 적절한 편집기를 사용하고 싶습니다 : 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

이제 P버퍼를 파일로 덤프 한 다음

vim /tmp/tmux

tmux 2.6에서 테스트되었습니다.


파일 이름을 묻는 메시지를 표시하려면 어떻게해야합니까 (그래서 하드 코딩 할 필요는 없음 /tmp/tmux)?
Peeyush Kushwaha

@PeeyushKushwaha 죄송하지만 내 tmux fu는 그다지 좋지 않습니다 .Google에 알려야합니다. 발견하면 알려주십시오.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1

vim을 사용하여 화면 로그를 보거나 편집 / 검색 / 저장하고 각 bash 프롬프트에서 로그를 접을 수 있습니다.

tmux capture-pane -pS -1000000 |
  vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1"  -  

프롬프트에 따라 정규식을 조정하고 정규식의 각 백 슬래시마다 4 개의 백 슬래시를 사용하십시오.

또는 vim 기능을 ~ / .vimrc에 넣으십시오.

command!           MoshFoldTmuxLog :setl fen fdm=expr
  \   fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1 

~ / .bashrc에서 검색 할 로그가 많은 경우 프롬프트에 날짜를 추가하십시오. 예 :

PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno 
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'         

0

여기 내가 찾은 해결책이 있습니다.

대상 경로와 파일 이름도 수정할 수 있습니다.

# 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'

tmux 구성 파일을 다시로드 한 후 prefix p필자의 경우를 Ctrl+a p 누를 수 있습니다 bind p. 선호하는 키 조합으로 변경할 수 있습니다 .

첫 번째 광산은 bind p다른 줄에서 덮어 쓰기 때문에 작동하지 않았으므로 그냥 주석 처리했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.