Vim'deki bölünmüş ayırıcı, tam sütun genişliğinden daha az olabilir mi?


21

Bir döşeme penceresi yöneticisi (harika) + bir terminal çoklayıcı (tmux) + vim içinde böler kullanın. Hiç pencere süslemem yok, bu yüzden programın içeriği onu vermezse, aralarında görsel bir ayrım yoktur. Zaten birden fazla monitör ve grup görevi ekran kullandığım için bu paradigmada oldukça rahatım. Eğer iki pencere yan yana olmak için bir neden olmasaydı, ilk etapta orada olmazlardı.

Ancak bu, görsel olarak en belirgin bölünmenin anlamsal olarak en az anlamlı olduğu biraz görsel uyumsuzluk yaratır.

  • Xorg penceresi ‹|› window = hiçbir şey
  • Tmux bölmesi ‹|› bölmesi = 1px bölücü çizgisi
  • Vim split ‹|› split = 1 karakter genişliğinde renkli sütun

Aşağıda, her birini yan yana pencereler, bölmeler ve vim bölünmeleri gösteren bir örnek bulabilirsiniz:

pencere camları ve bölmeleri

Tam çözünürlük sürümüne tıklamadan bile, gördüğünüz beyaz ayırıcı çizgi, ekrandaki en az önemli bölünme olan vim bölmeleridir. (Vim oturumunun sağındaki gri sütunun aslında 80. sütun vurgusu olduğuna dikkat edin, her ne kadar sık ​​sık bu boyutta çalışsam da).

Bölmede çizilen karakterin nasıl değiştirileceğini veya renk düzeni kontrastını nasıl azaltacağımı biliyorum. Ne yapmak istiyorum herhangi bir genişlik almaz tmux ile aynı bölünmüş çubuğu kullanmak çünkü bir yerine sütunlar arasında çizilir. Bu terminal tabanlı vim ile mümkün mü? Gvim? Neovim? Görsel olarak göze çarpmayan bir ayırıcı yapmak için, bölücü sütunu tamamen kapatılabilir mi?

PS Görsel olarak benzer bir ayırıcı kullanmanın nedeni mantıklı çünkü tmux bölmeleri ve vim bölmeleri arasında gezinmek için aynı anahtar bağlamaları kullanıyorum. Aynı tuşlar aralarında sorunsuz bir şekilde dolaşır, ancak görsel sınırlar da aynı olsaydı mantıklı olurdu.

Yanıtlar:


32

Tmux hakkında yanılıyorsun. Vim dahil olmak üzere her terminal tabanlı program gibi, yalnızca hücrelerin içine bir şeyler çeker . Bu, Vim ve tmux'un dikey kenarlıklar çizmek için aynı yöntemi kullandıkları anlamına gelir: sadece boru benzeri bir karakter kullanırlar.

Vim ( U+2502) kullanırken Tmux varsayılan olarak |( U+007C) kullanır .

Vim'de aynı ayırıcıyı istiyorsanız, aynı karakteri kullanabilirsiniz:

set fillchars+=vert:│

Renk şemanızın muhtemelen dikey bölmenin arka plan rengini ayarladığını unutmayın. Bu durumda, arka plan rengini doğrudan renk şemanızdan kaldırabilirsiniz:

hi VertSplit ctermbg=NONE guibg=NONE

Ben bu sonuca yendi zaten yaklaşık bir dakika ile değil teşekkürler. Neden başka türlü varsaydığımı bilmiyorum. Sanırım karakter uzayının kenarındaki ayırıcıyı kaplamak için sihri birleştiren bir çeşit Unicode karakteri yaptığı izlenimindeydim, ama şimdi bunun ne kadar saçma olacağını bilinçli olarak düşündüğümü fark ettim.
Caleb

1
Benim durumumda neye ihtiyacım olduğu ortaya çıktı hi VertSplit cterm=NONEçünkü reversevarsayılan olarak.
Lloeki

Herhangi bir tesadüfle, tmux ayırıcılarını '│' 'den,' / 'olarak nasıl değiştireceğinizi biliyor musunuz? @romainl
klaus

@EnanAjmain IIRC Kaynak kodunda tmux ayırıcı buldum. Bunun için bir seçenek olduğunu düşünmüyorum ama bir tmux uzmanından çok uzakım, bu yüzden kılavuzu kontrol etmelisiniz.
romainl

@romainl Bence haklısın. Tmux'u değiştirebildiğim büyük bir şey, kaynak kodunu kesmek zorunda kaldım.
klaus

5

Hayır, bu Vim'de yapılamaz ve muhtemelen GVIM'de uygulanması çok zor olacaktır.

Vim, terminalde kullanılan hücre tabanlı adreslemeye yapışır; bir arabellek içinde bu, j/ ile tutarlı dikey gezinme için çok önemlidir k. Hücre tabanlı x ve y koordinatlarıyla yapılan bu adresleme, Vim'in uygulamasında çok kökleşmiş, sanırım üstesinden gelmek çok zor.

Ayrıca dikkat :help design-not:

  • Vim, tüm platformlarda daha az tutarlı olma maliyetiyle güzel görünmeye çalışan süslü bir GUI editörü değildir.

5

Kendi ekran görüntümde bile, tmux sihir kullanmıyor, bölünme hala tek karakter genişliğinde bir sütun. Daha az rahatsız edici görsel efekt, vim'in ASCII varsayılanından daha az tıknaz olan bir Unicode kutu çizim karakterinin kullanılması ve vurgu arka plan renginin olmamasıdır.

Vim'de rc dosyasına aşağıdaki satırlar gibi bir şey ekleyerek hemen hemen aynı etki mümkündür:

" 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

Kullanımı autocmdgarantiler yürürlükte vurgulamak aşırı binmek kalır renk şemaları geçerseniz o. Bazı renk düzenleri bu renk grubu için anlamlı değerlere sahip olduğundan bu davranışı isteyebilir veya istemeyebilirsiniz.

Ayrıca , kullanmaya çalıştığınız fg / bg değerleriyle karışan ergo'yu cterm=NONEbu değeri ayarlayan bazı renk şemalarının üzerine atmak için gerekli olduğunu unutmayın reverse.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.