Yanıtlar:
Birleşik cevap:
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();
| }
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.
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 ¦ };
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)
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)
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
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.
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. tabstop
Ve shiftwidth
değişkenlerini kullandığından, büyük olasılıkla derhal girinti ayarlarınız için çalışacaktır.
Eklenti yüklendikten sonra, sadece :IndentGuidesEnable
veya 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=1
Başlangıçta bu etkinleştirmek için benim .vimrc ekleyin .
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).
İ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 .