상태의 VIM 시작 기호

상태의 VIM 시작 기호

저는 기본 텍스트 편집기로 VIM을 사용하려고 합니다. 이미 모든 것을 설정하고 VIM에 대해 읽는 데 많은 시간을 보냈습니다.

이제 볼 때마다 나를 괴롭히는 한 가지를 제외하고는 모든 것이 거의 괜찮습니다. VIM을 시작할 때(터미널 버전만 사용하고 있음) 때때로 일종의 이스케이프 시퀀스가 ​​깨졌거나 상태 표시줄에 뭔가 이상해 보이는 경우가 있습니다.

또한타이핑:이 포함된 명령은 입력할 때 기호를 대체하므로 보기에도 좋지 않습니다.

내 .vimrc를 여러 번 확인했지만 이 문제를 일으킬 수 있는 항목을 찾지 못했습니다. 내 마음에 떠오르는 유일한 것은 아마도 VIM 이벤트와 TMUX 후크를 엉망으로 만들었다는 것입니다.

내 tmux.conf에서

set-hook -g pane-focus-in 'if -F "#{==:#{pane_current_command},Vim}" "set -g status off; set -g pane-border-status off" "set -g status on; set -g pane-border-status bottom"'

.vimrc에서

autocmd VimEnter * silent !tmux set -g status off
autocmd VimEnter * silent !tmux set -g pane-border-status off
autocmd VimLeave * silent !tmux set -g status on
autocmd VimLeave * silent !tmux set -g pane-border-status bottom
au FocusLost * :set laststatus=0
au FocusGained * :set laststatus=2
autocmd InsertLeave * redraw!

하지만 그들은 또한 괜찮아 보인다 :/

내 설정은 다음과 같습니다

  • 맥OS 10.4.15
  • iTerm2 3.2.9
  • 오MyZsh
  • 티먹스
  • 맥빔 8.1.950

도움을 주셔서 감사합니다

해결책: 처럼@니콜라스 메리어트참고로 이는 tmux 상태 표시줄을 숨기거나 표시할 때 크기 조정으로 인해 발생하는 DSR(Device Status Report)에 대한 응답입니다. 내 경우에는 설정이 약간 과잉되었습니다. 먼저, 창 포커스를 위한 tmux 후크가 있습니다.

set-hook -g pane-focus-in 'if -F "#{==:#{pane_current_command},Vim}" "set -g status off; set -g pane-border-status off" "set -g status on; set -g pane-border-status bottom"'

이것은 VIM이 열려 있는 창이나 창 사이를 전환할 때 tmux 막대를 표시하거나 숨기도록 되어 있습니다. 그런 다음 내 .vimrc에 다음이 포함되었습니다.

  autocmd VimEnter * silent !tmux set -g status off
  autocmd VimEnter * silent !tmux set -g pane-border-status off

같은 작업을 수행할 예정이었지만 VimEnter 이벤트에서는 pane-focus-inVim이 시작될 때 tmux 후크가 실행되지 않을 것이라고 생각했기 때문에 작성했습니다(창은 동일한 초점으로 동일하게 유지됨). 실제로는 그렇지 않습니다.

set -g status off불행히도 두 번 실행될 때 정확히 무슨 일이 일어나는지 이해하지 못합니다 set -g pane-border-status off. 아마도 두 번째 실행은 tmux에 의해 무시되고 vim은 이를 인식할 수 없지만 .vimrc 구성에서 제거하면 해당 기호를 제거하는 데 도움이 되었습니다.

답변1

이것은 DSR(장치 상태 보고서)에 대한 응답입니다. 제 추측으로는 vim이 크기 조정 시 이것을 보내는 것 같습니다(tmux 상태 줄을 켜고 끄면 크기가 조정됩니다). vim이 응답을 올바르게 구문 분석하지 않는 것 같습니다.

관련 정보