Hoe verander ik de tabgrootte in Vim?

Elke keer als ik een selector in CSS toevoeg en op Enterdruk om de eigenschappen te definiëren, eindigt het als volgt:

#selector {
        property: value;
}

(tabbladen met 8 spaties)

Hoe kan ik Vim configureren om het als volgt te maken:

#selector {
    property: value;
}

(4-space tabs)


Antwoord 1, autoriteit 100%

Uitbreiding van het antwoord van zoul:

Als je Vim wilt instellen om specifieke instellingen te gebruiken bij het bewerken van een bepaald bestandstype, moet je autocommando’s gebruiken:

autocmd Filetype css setlocal tabstop=4

Hierdoor worden tabbladen weergegeven als 4 spaties. Door expandtabin te stellen, zal Vim spaties invoegen (het aantal wordt beheerd door tabstop) wanneer je op tab drukt; misschien wilt u softtabstopgebruiken om backspace correct te laten werken (dat wil zeggen, inspringing verminderen wanneer dat zou gebeuren als tabbladen worden gebruikt, in plaats van altijd één teken tegelijk te verwijderen).

Om een weloverwogen beslissing te nemen over hoe je dingen moet instellen, moet je de Vim-documenten lezen op tabstop, shiftwidth, softtabstopen expandtab. Het meest interessante deel is te vinden onder expandtab(:help 'expandtab):

Er zijn vier manieren om tabbladen in Vim te gebruiken:

  1. Houd ‘tabstop’ altijd op 8, zet ‘softtabstop’ en ‘shiftwidth’ op 4 (of 3 of wat je maar wilt) en gebruik ‘noexpandtab’. Dan gebruikt Vim een mix van tabs en spaties, maar typen en gedraagt zich alsof er elke 4 (of 3) tekens een tab verschijnt.

  2. Set ‘TabStop’ en ‘Shiftwidth’ naar wat je ook verkiest en ‘ExpandTTAB’ gebruikt. Op deze manier voegt u altijd spaties in. De opmaak zal nooit worden verprutst wanneer ‘tabstop’ is gewijzigd.

  3. SET ‘TABSTOP’ EN ‘SHIPWIDTH’ NAAR WAT U LIEFT EN GEBRUIK EEN | MODELINE | Om deze waarden in te stellen bij het opnieuw bewerken van het bestand. Werkt alleen bij het gebruik van VIM om het bestand te bewerken.

  4. Stel altijd ‘Tabstop’ en ‘Shiftwidding’ in op dezelfde waarde en ‘NoExpandtab’. Dit zou dan moeten werken (alleen voor eerste streepjes) voor een tabstop-instelling die mensen gebruiken. Het is misschien leuk om tabbladen te hebben na de eerste niet-blanco geplaatst als spaties als je dit echter doet. Anders zijn opgelijnde opmerkingen verkeerd wanneer ‘tabstop’ is gewijzigd.


Antwoord 2, Autoriteit 208%

:set tabstop=4
:set shiftwidth=4
:set expandtab

Hiermee wordt vier spaties ingevangen in plaats van een tab-teken. Spaties zijn een beetje meer “stabiel”, wat betekent dat de tekst die met spaties wordt ingesprongen, hetzelfde in de browser en elke andere toepassing zal verschijnen.


Antwoord 3, Autoriteit 117%

Gebruik deze opdracht om de wijziging voor één sessie te maken:

:set tabstop=4

Om de wijziging permanent te maken, voeg deze toe aan ~/.vimrcof ~/.vim/vimrc:

set tabstop=4

Dit beïnvloedt alle bestanden, niet alleen CSS. Om alleen CSS-bestanden te beïnvloeden:

autocmd Filetype css setlocal tabstop=4

Zoals vermeld in Michał’s antwoord .


Antwoord 4, Autoriteit 38%

Verschillende van de antwoorden op deze pagina zijn ‘enkele gebruik’ fixes aan het beschreven probleem. Betekenis, de volgende keer dat u een document opent met VIM, zullen de vorige tab-instellingen terugkeren.

Als iemand geïnteresseerd is in het permanent wijzigen van de tabbladinstellingen:

  • vind/open uw .vimrc – instructies hier
  • voeg de volgende regels toe: (meer info hier)

    set tabstop=4
     set shiftwidth=4
     set expandtab
    
  • sla vervolgens het bestand op en test


Antwoord 5, autoriteit 31%

Als een one-liner naar vim:

:set tabstop=4 shiftwidth=4

Voor permanente installatievoegt u deze regels toe aan ~/.vimrc:

set tabstop=4
set shiftwidth=4
set expandtab    <-- (optional) 4-spaces instead of Tab indentation

Antwoord 6, autoriteit 5%

UPDATE

Als je aan een bepaald project werkt, raad ik je ten zeerste aan om editorconfigte gebruiken.

Hiermee kun je een .editorconfig-bestand definiëren in de root van je repository en de inspringing definiëren die je wilt gebruiken voor elk bestandstype in je repository.

Bijvoorbeeld:

root = true
[*.css]
charset = utf-8
indent_style = space
indent_size = 4
[*.js]
charset = utf-8
indent_style = space
indent_size = 2

Er is een vim-plug-indie vim automatisch configureert volgens het configuratiebestand voor het bestand dat u openen.

Bovendien wordt de .editorconfigbestand automatisch ondersteund op vele andere ID’s en redacteuren, dus het is de beste optie om samen te werken tussen gebruikers met verschillende omgevingen.

origineel antwoord

Als u vaak maten moet wijzigen en u dit niet wilt binden aan een specifiek bestandstype, kunt u vooraf gedefinieerde opdrachten op uw .vimrc-bestand hebben om de voorkeuren te schakelen:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

Deze kaarten kaarten twee verschillende sets van formaten naar toetsen \ t en \ m. U kunt dit opnieuw verbinden met welke toetsen die u wilt.


Antwoord 7

in mijn .vim/vimrc(vim 8.0 onder Ubuntu bionic), ik heb

if has("autocmd")
  filetype plugin indent on
endif

dus toegevoegd lijn zoals:
autocmd Filetype css setlocal tabstop=2
werkt niet.

Ik heb .vim/indentmap gemaakt en toegevoegd in:
css.vimmet

set tabstop=2
set shiftwidth=2
set softtabstop=2

en het werkt!
Ik heb geprobeerd op een andere computer met Ubuntu Focal en Vim 8.1, het werkt niet! – (

Other episodes