इंडेंटेशन के लिए टैब, संरेखण के लिए रिक्त स्थान


17

मैं टैब के साथ विम ऑटो इंडेंट बनाने की कोशिश कर रहा हूं, और व्हाट्सएप के साथ संरेखित कर रहा हूं, लेकिन वास्तव में, टैब के साथ इंडेंट विम और टैब + व्हाइट स्पेस के साथ संरेखण भरें।

विम करता है:

यहाँ छवि विवरण दर्ज करें

(प्रत्येक ब्लॉक एक टैब है)

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

यह कर सकते हैं:

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

इसलिए, मुझे लगता है कि टैब और रिक्त स्थान के विषय के बारे में बहुत सारे प्रश्न हैं, लेकिन उनमें से कोई भी कुछ जस्ट वर्क्स समाधान प्रदान नहीं करता है:

वास्तव में मैं उपयोग कर रहा हूं:

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

मैंने स्मार्ट टैब प्लगइन की कोशिश की , जो अच्छी तरह से काम करता है, लेकिन जब मैं कोशिश करता gg=Gहूं तो मुझे कुछ अजीब त्रुटियां मिलती हैं:

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

यह चर्चा पुरानी लगती है, इसलिए अब, 2015 से निपटने के लिए एक आधिकारिक समाधान है?



मेरे पास इसके लिए मैपिंग नहीं है, बस एक विचार है ... लेकिन अगर आप टैब कुंजी को दबाने पर टैब डालने के लिए विम को सेट करते हैं (जो भी आपकी पसंद है), लेकिन वास्तव में यदि आप टाइप करते हैं तो टैब को रिक्त स्थान में विस्तारित करते हैं -Tab? कि इस तरह के संरेखण सरल नहीं होगा?
वाइल्डकार्ड

(पुनश्च: वहाँ पर एक अच्छी चर्चा है "टैब्स बनाम रिक्त स्थान" के "धार्मिक युद्धों" मंच में हास्य xkcd का आनंद लें,।)
वाइल्डकार्ड

जवाबों:


3

यह वास्तव में स्वचालित रूप से करना मुश्किल है। विम को पता नहीं है कि "इंडेंटेशन" क्या है और "एलाइनमेंट" क्या है; और कुछ लोग इस बात पर असहमत हो सकते हैं कि वास्तव में इंडेंटेशन और अलाइनमेंट क्या है।

कहा जा रहा है कि, स्मार्ट टैब प्लगइन वह करने के लिए डिज़ाइन किया गया है जिसे आप चाहते हैं; मैंने पाया कि यह सी फाइलों के लिए यथोचित रूप से काम करता है, लेकिन इसमें कई तरह के कैवेट हैं; उदाहरण के लिए, यह पायथन फ़ाइलों को तोड़ता है , और कई बार सी फ़ाइलों के लिए कुछ अप्रत्याशित (मेरे लिए, वैसे भी) चीजें करता है।
स्रोत को देखते हुए, मैं वास्तव में यह पता नहीं लगा सकता कि यह 5 मिनट में कैसे काम करता है, और इस तथ्य के साथ संयुक्त है कि यह कुछ सामान को तोड़ता है, आपको सावधानी से आगे बढ़ने के लिए कहना चाहिए ...


3

आपके द्वारा उल्लेखित स्मार्ट टैब प्लग-इन जितना अच्छा हो, उतना अच्छा होता है। मैं शुरू में उसी त्रुटि में भाग गया था जो आपने किया था और छोड़ दिया लेकिन अंततः इसे ठीक करने के लिए कुछ मिनट बिताए। निम्नलिखित पैच लगाने का प्रयास करें:

--- 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

मैंने बाद में पाया कि किसी ने स्मार्ट टैब्स विकी सेक्शन में इसी तरह के फिक्स का सुझाव दिया है । काश, कोई नई रिलीज़ नहीं होती।


0

विम में इंडेंटेशन केवल निम्न स्क्रिप्ट का उपयोग करके किया जाता है

स्क्रिप्ट एक फ़ाइल का इंडेंटेशन करने के लिए

#!/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
यह सवाल का जवाब नहीं है
मार्टिन टूरनोइज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.