vim에서 편집 한 파일 이름으로 tmux 탭에 레이블을 지정하는 방법은 무엇입니까?


14

터미널에서 tmux 세션을 열 때마다 vim 세션을 포함하는 모든 탭에 레이블이 표시 vim됩니다.

내 질문은 : 편집 된 파일 이름 또는 vim | test.cpp해당 탭의 제목으로 사용되는 것과 같은 이름으로 tmux 탭에 레이블을 지정하도록 구성하는 방법 입니다.


1
도움이 될 수 있습니까 : stackoverflow.com/a/15124717/2558252 ?
nobe4

감사합니다. 프로세스를 좀 더 자세히 설명해 주시겠습니까? 또한 대답은 완전하지 않습니다. 그 사람은 단지 힌트를 줬다
Mayukh Sarkar

질문에 대한 답변으로 (그리고 IMHO 올바르게) 당신은 그것을 받아 들일 수 있습니까?
nobe4

답변:


19

당신은 간다 :

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call system("tmux rename-window 'vim | " . expand("%:t") . "'")

분해 :

autocmd BufReadPost,FileReadPost,BufNewFile,BufEnter * call

버퍼 읽기에서 파일 읽기 또는 새 파일 이벤트 버퍼링 (참조 :help autocmd-events)은 다음 명령을 실행합니다.

call system()

시스템 함수를 호출하고 텍스트를 전달하십시오.

"tmux rename-window 'vim | "  

다음으로 시작하는 문자열로 현재 창 이름을 바꿉니다. vim |

. expand("%:t") 

문자열에 파일 이름을 추가합니다 ( 이 문서 의 서식과 이 게시물을 삽입 확장을위한)

. "'"

마지막 '을 추가하여 명령을 닫으십시오.

.vimrc 파일을 편집하는 동안 확장하면 다음과 같습니다.

system("tmux rename-window 'vim | .vimrc'")

의견에서 @erthalion이 말했듯이 vim을 떠날 때 정리할 수 있습니다.

autocmd VimLeave * call system("tmux rename-window 'tmux'")

1
BufEnter기존 버퍼간에 전환 할 때도 레이블을 변경하기 위해이 목록에 이벤트 를 포함시키는 것이 좋을 것이라고 생각합니다 autocmd VimLeave * call system("tmux rename-window 'tmux'").
erthalion

3

vim을 종료 할 때 기본 tmux 이름 지정 체계를 복원하려면 다음을 수행하십시오.

autocmd VimLeave * call system("tmux setw automatic-rename")

이것은 다른 답변과 함께 사용되어 최상의 솔루션을 제공합니다. tmux 이름 바꾸기 창 스 니펫을 보았습니다. 그러나 누군가가 자동 이름 바꾸기 tmux 창 옵션을 지적한 것은 이번이 처음입니다. 감사합니다.
f3xy

1

이것은 @raphael의 답변 덕분에 vimrc에 넣은 것입니다.

또한 FocusGained 및 FocusLost 이벤트에 tmux-plugins / vim-tmux-focus-events 플러그인을 설치합니다.

augroup tmux                                                                                                                                                                                                                                                                                                                 
  autocmd!                                                                                                                                                                                                                                                                                                                 
  if exists('$TMUX')                                                                                                                                                                                                                                                                                                       
    autocmd BufReadPost,FileReadPost,BufNewFile,FocusGained * call system("tmux rename-window " . expand("%:t"))                                                                                                                                                                                                         
    autocmd VimLeave,FocusLost * call system("tmux set-window-option automatic-rename")                                                                                                                                                                                                                                  
  endif                                                                                                                                                                                                                                                                                                            
augroup END
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.