Girinti kılavuzları / satırları nasıl eklenir


42

Sublime Text 2'de, girintinizin olduğu yerde dikey kılavuzlar alırsınız, şöyle:

Sublime Text ekran görüntüsü

ama vim'de açıkça yapmam:

vim ekran görüntüsü

Vim'de böyle çizgiler göstermenin bir yolu var mı? Bu arada, girintim 2 boşluk.

:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab

Yanıtlar:


39

Birleşik cevap:

Sekmeleri kullanıyorsanız

Listchars kullanmayı denerdim:

:set listchars=tab:\|\ 
:set list

Not: \Yukarıdakilerden sonra bir boşluk var .

Bu yöntem iyidir, çünkü Vim'in bu tür şeyleri göstermek için yerleşik desteğini kullanır.

Örnek çıktı:

|       if (1) {
|       |       func();
|       }

yukarıdaki metin örneğinin ekran görüntüsü

Ancak, bu lider alanlar için işe yaramaz. @Josh Petrie'nin belirttiği gibi, mekanlar için çalışmak için bir yama var , ancak daha sonra bu cevabın kapsamı dışındaki Vim'i yeniden derlemeniz gerekecek.

Boşluk kullanıyorsanız ve bir eklenti kullanmaktan çekinmiyorsanız

Vaibhav Sagar, eklentinin indentLine'ın bu işlevi yerine getirdiğini gösteriyor.

Normal şekilde kurun (bkz. Eklentileri yükleme ) ve sihirli bir şekilde daha fazla giriş yapmadan çalışır gibi görünmektedir. ASCII çubuklarına aldırış etmiyorsanız, yazı tiplerinizle hiçbir şey yapmanız gerekmez. Girinti ayarlarınızı yaptıktan ve çalıştıktan sonra örneğinizin örnek çıktısı:IndentLinesReset

45   ¦ var move = function(direction) {
46   ¦ ¦ if(!initialized) { initialize(); }
47 
48   ¦ ¦ if(shiftBoard(direction)) {
49   ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50   ¦ ¦ }
51   ¦ };

örneğin boşluklu örnek ekran görüntüsü

Eklenti, Vim 7.3 veya daha yenisini gerektirir ve bu sürümün Gizli özelliğini kullanmaya başlıyor. Metni gerçekten gizlemek yerine, metni görünümdeki çubuklarla değiştirir, ancak gerçek arabelleği değiştirmez. Sonuç olarak, çubukları görüyorsunuz ancak dosyaya kaydedilmiyorlar (aslında boşluk oldukları için)

Uyarı

Bu yöntemlerin ikisi de "doğru" girintili kodu alır. Bir "blok" açıldığında girinti satırlarını girinti seviyesine yerleştirmezler (hangi yüce görünürler), bunun yerine çizgileri girinti ayarlarınıza göre düzenli aralıklarla yerleştirirler. Ek olarak, yalnızca gerçekte boşluğu olan çizgilerdeki çubukları gösterir (bu yüzden ilk altındaki vim çıkışındaki çizginin ifçubukları yoktur, görsel bir boşluk oluşturur)


Aslında, sekmeler yerine girintiler için boşluk kullanıyorum. Sorumu güncelledim.
aharris88

Ah. Öyleyse, daha fazla araştırma gerektirecek.
John O'M.

1
Liste listelerinin, posta listesinde bulabileceğiniz iz bırakmayan alanlar için çalışmasını sağlayan bir düzeltme eki vardır. Bununla birlikte, resmi dağıtıma kabul edilmedi :(

1
Vaibhav Sagar ve Josh Petrie'den bilgi eklemek için cevap güncellendi. Vaibhav'ın bahsettiği eklentiyi denedim ve sonuçları düzenlenen cevapta gösterdim. Sanırım bu eklentiyi kendim kullanmaya başlayacağım. Fantastik değil, ama genel olarak oldukça iyi çalışıyor gibi görünüyor.
John O'M.

Kılavuzların yüce olduğu gibi boş çizgiler üzerinde görünmesini sağlamak mümkün müdür?
James,

19

Tam olarak istediğin gibi olmayan, fakat aynı sütunda ne olduğunu görmeyi kolaylaştırmakla aynı amacı yerine getirdiğim başka bir seçenek de, aşağıdakileri senin için ayarlamak vimrc:

set cursorcolumn
set cursorline

imleç sütun çizimi

Bu, imlecinizi görmek istediğiniz sütuna götürmek zorunda olduğunuza yol açar, ancak daha az görsel karışıklık elde edersiniz. Genellikle çentik seviyelerini önemsemediğimde, imleci ile yerimi yine de koruyorum. Benim yolum da parantez kapatmadan python gibi dillerde tuhaf görünümlü değildir.


Python vi kullanıcıları bu özellik için ölecek
shuva

18

Tamamlanma uğruna , beyaz boşlukların renklerini değiştirerek girintileme seviyelerini gösteren Girinti Kılavuzları eklentisi de vardır . Sürüm 7.2 veya üstü gerektirir. tabstopVe shiftwidthdeğişkenlerini kullandığından, büyük olasılıkla derhal girinti ayarlarınız için çalışacaktır.

Imgur

Eklenti yüklendikten sonra, sadece :IndentGuidesEnableveya kullanabilirsiniz :IndentGuidesDisable. Terminal vim kullanıyorsanız, kılavuza göre

Şu anda Terminal Vim'in yalnızca temel desteği var. Bu, renk şemasına göre renklerin otomatik olarak hesaplanmayacağı anlamına gelir. Bunun yerine, bazı önceden belirlenmiş renkler arka planın koyu veya açık olmasına bağlı olarak kullanılır.

Ekran görüntüsünün kılavuzlarının renklerini değiştirmek için aşağıdakileri kullandım

let g:indent_guides_auto_colors=0

bu nedenle renkler, arabellekler değiştirildiğinde değiştirilemez ve ardından renkleri

hi IndentGuidesEven ctermbg=238
hi IndentGuidesOdd ctermbg=236

Sunulan diğer çözümlerde olduğu gibi, sadece satırlardaki girinti kılavuzlarının boşluk olduğunu gösterir.


let g:indent_guides_enable_on_vim_startup=1Başlangıçta bu etkinleştirmek için benim .vimrc ekleyin .
inye,

9

Bunun için en iyisi olarak indentLine eklentisini buldum . Yine de uygun sembollere sahip bir fonta ihtiyacınız var, Windows'taki Consolas ve Mac OS X'te Menlo'nun iyi çalıştığını görüyorum. Yukarıdaki birleşik cevabın da işaret ettiği gibi, vim concealözelliğini kullanarak dikey çubukları ( kullanılan fonttan ) doğru yere koymak için çalışır (ab) . Bu çözümden çok memnunum ama dezavantajı, dikey çubuklarımın kutu çizim gliflerinin bir parçası olması ve diğer editörlerde olduğu gibi sola hizalanmak yerine ortada hizalanması. Buna alıştım ancak yazı tipini manuel olarak yamalayarak veya Fantasque Sans Mono gibi bir yazı tipi kullanarak düzeltilebilir (bağlantılı github repo'daki ekran görüntülerinin indentLine'i nasıl kullandığına dikkat edin).


4
Lütfen sadece eklenti-link-cevapları hakkındaki tartışmamıza bir göz atın ve cevabınızı daha fazla bilgi ile güncellemeyi düşünün.

Benim hatam, cevabımı güncelledim.
Vaibhav Sagar

Yamalı dikey çizgi hangi glif? Buraya yapıştırabilir misin? Teşekkürler.
Timtro

2

İndentLine eklentisi küçük olmayan dosyalarda oldukça yavaş olma eğilimindedir, bir saniye kadar beklerken enter'a tıklandığında gözlenebilir.

Vim-indentguides 'in sekme girintileri ve boşluk girintilerini görsel olarak ayıran daha hızlı ve görsel olarak benzer bir eklenti olduğunu gördüm .

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.