vimの分割セパレーターは列全体の幅より小さくできますか?


21

タイルウィンドウマネージャー(素晴らしい)+ターミナルマルチプレクサー(tmux)+ vim内で分割します。私はウィンドウ装飾がまったくないので、プログラムの内容がそれを与えない場合、それらの間の視覚的な分割はまったくありません。とにかく複数のモニターを使用し、画面ごとにタスクをグループ化するため、このパラダイムに非常に満足しています。2つのウィンドウが並んでいる理由がなければ、そもそも存在しません。

ただし、これにより、視覚的に最も明らかな分割が意味的に最も重要でない視覚的な不協和音が少し生じます。

  • Xorgウィンドウ‹|› window =何もありません
  • Tmuxペイン‹|›ペイン= 1ピクセルの分割線
  • Vim分割‹|› split = 1文字幅の色付き列

以下は、ウィンドウ、ペイン、vimの分割ごとに1つずつ表示するサンプルです。

ウィンドウペインと分割

フル解像度バージョンまでクリックしなくても、表示される白い分割線は画面上で最も重要な分割ではないvimペインです。(vimセッションの右側にある灰色の列は、実際には80番目の列のハイライトであり、どのような種類の仕切りでもないことに注意してください。

スプリットに描かれたキャラクターを変更する方法、または配色のコントラストを下げる方法を知っています。私がしたいのは、tmuxと同じ分割バーを使用することです。分割バーは1つではなく列の間に描画されるため、幅を占有しません。これは端末ベースのvimで可能ですか?グヴィム?ネオビム?視覚的に目立たないセパレーターを作成するために、仕切り柱を完全にオフにすることはできますか?

PS視覚的に類似したセパレータを使用する理由は理にかなっています。これは、同じキーバインディングを使用してtmuxペインとvimスプリット間を移動するためです。同じキーがそれらの間をシームレスに移動します。視覚的な境界も同じ場合にのみ意味があります。

回答:


32

あなたはtmuxについて間違っています。Vimを含むすべての端末ベースのプログラムと同様に、セル内のデータのみを描画します。これは、Vimとtmuxの両方が同じ方法を使用して垂直の境界線を描画することを意味します。これらはパイプのような文字を使用するだけです。

TmuxはデフォルトでU+2502)を使用しますが、Vimは|U+007C)を使用します。

Vimで同じ区切り文字が必要な場合は、同じ文字を使用できます。

set fillchars+=vert:│

カラースキームはおそらく垂直分割の背景色を設定することに注意してください。その場合は、colorschemeで背景色を直接削除できます。

hi VertSplit ctermbg=NONE guibg=NONE

はこの結論にあなたを約1分でbeatりましたが、とにかく感謝します。なぜそうでないと思ったのかはわかりません。魔法を組み合わせた何らかのユニコード文字を使って文字スペースの端にセパレータを重ねているという印象を受けていたと思いますが、今では意識的にそれがどれほど馬鹿げているかを考えていることがわかります。
カレブ

1
hi VertSplit cterm=NONEそれreverseがデフォルトであるため、私の場合に必要だったことが判明しました。
Lloeki

tmuxの区切り文字を「│」から「/」に変更する方法を知っていますか?@romainl
クラウス

@EnanAjmain IIRCソースコードにtmuxセパレータが見つかりました。選択肢はないと思いますが、tmuxの専門家とはほど遠いので、マニュアルを確認してください。
ロメインル

@romainlあなたは正しいと思います。tmuxを変更できた主要なものは何でも、ソースコードをハッキングする必要がありました。
クラウス

5

私自身のスクリーンショットでさえ、tmuxは魔法を使用していません。分割はまだ1文字幅の列です。目立たない視覚効果は、vimのASCIIデフォルトよりも不格好なUnicodeボックス描画文字の使用と、ハイライト背景色の欠如です。

vimでは、次のような行をrcファイルに追加することで、ほぼ同じ効果が得られます。

" Set split separator to Unicode box drawing character
set encoding=utf8
set fillchars=vert:│

" Override color scheme to make split the same color as tmux's default
autocmd ColorScheme * highlight VertSplit cterm=NONE ctermfg=Green ctermbg=NONE

を使用autocmdすると、配色を切り替えてもハイライトの上書きが有効になります。一部のカラースキームにはこのカラーグループに適切な値があるため、この動作が必要な場合と不要な場合があります。

また、cterm=NONEこの値をreverseに設定するいくつかのカラースキームをオーバーライドする必要があることに注意してください。


4

いいえ、これはVimでは実行できず、GVIMでの実装はおそらく非常に困難です。

Vimは、端末で使用されるセルベースのアドレス指定に固執します。バッファ内では、これはj/ を使用した一貫した垂直ナビゲーションに不可欠ですk。セルベースのxおよびy座標によるこのアドレス指定は、Vimの実装に深く染み込んでおり、克服するのは非常に難しいと思います。

また注意してください:help design-not

  • Vimは、すべてのプラットフォームで一貫性が失われるという犠牲を払って見栄えを良くしようとする派手なGUIエディターではありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.