ステータスのVIM起動シンボル

ステータスのVIM起動シンボル

私はメインのテキスト エディターとして VIM に移行しようとしており、すでにすべての設定と VIM についての読書に多くの時間を費やしています。

今ではすべてがほぼ正常ですが、常に気になることが1つあります。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
  • ああ、マイズ
  • tmux
  • macvim 8.1.950

助けてくれてありがとう

解決: として@ニコラス・マリオット指摘しておきますが、これらは tmux ステータス バーを非表示/表示するときにサイズ変更によって発生する DSR (デバイス ステータス レポート) への応答です。私の場合、セットアップが少しやり過ぎでした。まず、ペイン フォーカス用の 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"'

これは、少なくとも 1 つの VIM が開かれている状態でペインまたはウィンドウを切り替えるときに tmux バーを表示/非表示にするはずです。次に、.vimrc に次の内容を含めました。

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

同じことを行うはずでしたが、VimEnter イベントでは、Vim の起動時に tmux フックが起動しない (ペインは同じフォーカスのまま) と思ったので、これらを記述しましたpane-focus-in。実際にはそうではなく、起動します。

set -g status off残念ながら、とが2回実行されると何が起こるのか正確にはわかりません。set -g pane-border-status offおそらく2回目はtmuxによって無視され、vimはそれを認識できませんが、.vimrc構成から削除すると、それらのシンボルを取り除くのに役立ちました。

答え1

これらは DSR (デバイス ステータス レポート) への応答です。私の推測では、vim はこれをサイズ変更時に送信します (tmux ステータス ラインのオン/オフを切り替えるとサイズが変更されます)。vim は応答を正しく解析していないようです。

関連情報