狀態中的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!

但它們看起來也不錯:/

我的設定是:

  • macOS 10.4.15
  • iTerm2 3.2.9
  • 哦我的Zsh
  • 多路復用器
  • 麥克維姆 8.1.950

感謝您的協助

解決方案: 作為@尼古拉斯·馬裡奧特指出,這些是對 DSR(裝置狀態報告)的回應,該報告來自隱藏/顯示 tmux 狀態列時調整大小。就我而言,設定有點矯枉過正。首先,有用於窗格焦點的 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 offandset -g pane-border-status off執行兩次時到底發生了什麼,也許第二個被 tmux 忽略並且 vim 無法識別它,但是從 .vimrc 配置中刪除它確實有助於擺脫這些符號

答案1

這些是對 DSR(裝置狀態報告)的回應,我的猜測是 vim 在調整大小時發送此訊息(開啟和關閉 tmux 狀態列將調整大小)。看起來 vim 沒有正確解析回應。

相關內容