Girinti sekmeleri, hizalama boşlukları


17

Sekmeler ile vim otomatik girinti yapmaya ve beyaz boşluklarla hizalamaya çalışıyorum, ama aslında, vim sekmeler ile girinti ve sekmeler + beyaz boşluklarla hizalama doldurun.

Vim yapar:

resim açıklamasını buraya girin

(her blok bir sekmedir)

{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}

Yapabilir:

{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}

Bu yüzden, sekmeler ve boşluklar hakkında birçok soru olduğunu düşünüyorum, ancak hiçbiri Just Works çözümü sunmuyor:

Aslında kullanıyorum:

set ai
set cindent
set cinoptions=(0,:0,u0,U0,g0)

İyi çalışıyor gibi görünen Smart Tab eklentisini denedim , ancak denediğimde gg=Gbazı garip hatalar alıyorum:

Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign:
line   11:
E108: No such variable: "b:ctab_lastalign"
Press ENTER or type command to continue
Error detected while processing function CtabRedoIndent:
line   10:
E170: Missing :endwhile

Bu tartışma prety old gibi görünüyor, şimdi 2015, bununla başa çıkmak için resmi bir çözüm var mı?



Bunun için bir eşlemem yok, sadece bir fikir ... ama sekme tuşuna bastığınızda Vim'i sekmeleri eklemek için ayarlarsanız (istediğiniz genişlikte), ancak Shift yazdığınızda aslında bir sekmeyi boşluklara genişletirseniz ne olur? -Tab? Bu, bu tür bir hizalamayı basitleştirmez mi?
Joker

(PS: xkcd çizgi romanının "Dini Savaşlar" forumunda "Sekmeler ve Alanlar" hakkında güzel bir tartışma var . Keyfini çıkarın;)
Wildcard

Yanıtlar:


3

Bunu gerçekten otomatik olarak yapmak zordur. Vim "girinti" ve "hizalama" nın ne olduğunu bilmiyor; ve bazı insanlar tam olarak girintiyi ve hizalamayı neyin oluşturduğuna katılmayabilir.

Bununla birlikte, Smart Tabs eklentisi istediğinizi yapmak için tasarlanmıştır; C dosyaları için oldukça iyi çalıştığını, ancak bazı uyarılar olduğunu buldum; o kırılır zamanlarda (neyse, benim için) C dosyaları için bir şeyler örneğin Python dosyaları ve bazı beklenmedik yapar.
Kaynağa baktığımda, 5 dakika içinde nasıl çalıştığını gerçekten anlayamıyorum ve bazı şeyleri bozduğu gerçeğiyle birleştiğinde, dikkatli bir şekilde ilerlemenizi söylemelidir ...


3

Bahsettiğiniz Smart Tabs eklentisi, olabildiğince iyi. Başlangıçta yaptığınız ve vazgeçtiğiniz aynı hatayla karşılaştım ama sonunda düzeltmek için birkaç dakika geçirdim. Aşağıdaki düzeltme ekini uygulamayı deneyin:

--- ctab.vim.orig   2016-08-11 17:05:20.767275274 +0800
+++ ctab.vim    2016-08-11 17:15:20.039286525 +0800
@@ -221,7 +221,7 @@
       if a:line == line('.')
         let b:ctab_lastalign=a:line
       else
-        unlet b:ctab_lastalign
+        unlet! b:ctab_lastalign
       endif
       set ts=50
       set sw=50

Daha sonra birinin Smart Tabs wiki bölümünde benzer bir düzeltme önerdiğini fark ettim . Ne yazık ki, yeni bir sürüm olmadı.


0

Vim'deki indikasyon sadece aşağıdaki komut dosyası kullanılarak gerçekleştirilir

Tek bir dosyanın Girintisini gerçekleştirmek için komut dosyası

#!/bin/bash 
#Author: Ankit shah
#Enter file name to indent as argument
file=$1
vim $file -c "normal gg=G" -c "wq"
#Use expand command to turn tabs into spaces. Code uniform across different vim environment
expand -t 4 $file $file 

2
Bu sorunun cevabı değil
Martin Tournoij
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.