Η τρέχουσα ρύθμισή μου προϋποθέτει 8 κενά- πώς μπορώ να το επαναπροσδιορίσω;
Εξαρτάται από το τι εννοείτε. Θέλετε οι πραγματικοί χαρακτήρες tab στο αρχείο σας να εμφανίζονται με πλάτος 4 διαστημάτων, ή με τον όρο "tab" εννοείτε στην πραγματικότητα ένα εσοχή, που δημιουργείται με το πάτημα του πλήκτρου tab, το οποίο θα είχε ως αποτέλεσμα το αρχείο να περιέχει κυριολεκτικά (έως και) 4 χαρακτήρες διαστήματος για κάθε "tab" που πληκτρολογείτε;
Ανάλογα με την απάντησή σας, ένα από τα ακόλουθα σύνολα ρυθμίσεων θα πρέπει να λειτουργήσει για εσάς:
Για χαρακτήρες καρτέλας που εμφανίζονται σε πλάτος 4 κενών:
set tabstop=4
Αν χρησιμοποιείτε πραγματικούς χαρακτήρες tab στον πηγαίο σας κώδικα, πιθανόν να θέλετε επίσης αυτές τις ρυθμίσεις (αυτές είναι στην πραγματικότητα οι προεπιλογές, αλλά ίσως να θέλετε να τις ορίσετε αμυντικά):
set softtabstop=0 noexpandtab
Τέλος, αν θέλετε μια εσοχή να αντιστοιχεί σε ένα απλό tab, θα πρέπει επίσης να χρησιμοποιήσετε:
set shiftwidth=4
Για εσοχές που αποτελούνται από 4 χαρακτήρες διαστήματος αλλά εισάγονται με το πλήκτρο tab:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Για να γίνουν οι παραπάνω ρυθμίσεις μόνιμες προσθέστε αυτές τις γραμμές στο vimrc.
Σε περίπτωση που χρειαστεί να κάνετε προσαρμογές ή απλά θέλετε να καταλάβετε τι σημαίνουν όλες αυτές οι επιλογές, εδώ'είναι μια ανάλυση του τι σημαίνει κάθε επιλογή:
tabstop
Το πλάτος ενός σκληρού tabstop μετρούμενο σε "κενά" -- ουσιαστικά το (μέγιστο) πλάτος ενός πραγματικού χαρακτήρα tab. >,
shiftwidth
Το μέγεθος μιας "εσοχής". Μετριέται επίσης σε κενά, οπότε αν η βάση του κώδικά σας κάνει εσοχή με χαρακτήρες tab, τότε θέλετε το
shiftwidth
να ισούται με τον αριθμό των χαρακτήρων tab επί τοtabstop
. Αυτό χρησιμοποιείται επίσης από πράγματα όπως οι εντολές=
,>
και<
. >,softtabstop
Η ρύθμιση αυτής της τιμής σε μια μη μηδενική τιμή διαφορετική από την
tabstop
θα κάνει το πλήκτρο tab (σε λειτουργία εισαγωγής) να εισάγει έναν συνδυασμό διαστημάτων (και πιθανώς tabs) για να προσομοιώσει τα tab stops σε αυτό το πλάτος. >,expandtab
Η ενεργοποίηση αυτής της επιλογής θα κάνει το πλήκτρο tab (σε λειτουργία εισαγωγής) να εισάγει κενά αντί για χαρακτήρες tab. Αυτό επηρεάζει επίσης τη συμπεριφορά της εντολής
retab
. >,smarttab
Η ενεργοποίηση αυτής της λειτουργίας θα κάνει το πλήκτρο tab (σε λειτουργία εισαγωγής) να εισάγει κενά ή tabs σε να πηγαίνει στην επόμενη εσοχή του επόμενου tabstop όταν ο δρομέας βρίσκεται στην αρχή μιας γραμμής (δηλ. το μόνο οι χαρακτήρες που προηγούνται είναι κενά διαστήματα).
Για περισσότερες λεπτομέρειες σχετικά με οποιοδήποτε από αυτά δείτε :help 'optionname'
στο vim (π.χ. :help 'tabstop'
)
Για να το ορίσετε αυτό σε μόνιμη βάση για τον τρέχοντα χρήστη, δημιουργήστε (ή επεξεργαστείτε) το αρχείο .vimrc
:
$ vim ~/.vimrc
Στη συνέχεια, επικολλήστε την παρακάτω διαμόρφωση στο αρχείο. Μόλις γίνει επανεκκίνηση του vim, οι ρυθμίσεις της καρτέλας θα εφαρμοστούν.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces