2012-12-12 6 views

Antwort

0

Wenn er echte Leerzeichen anstelle von Tabs verwendet (wie es klingt), nein, können Sie nicht vim Display 2 Leerzeichen, wo es 4 sind. Sie können vim die folgenden Befehle sagen, um alle 4-Space-Gruppen mit zu ersetzen das Tab-Zeichen, und zeigen Sie sie dann als 2 Leerzeichen an.

:set tabstop=4 ! display a tab as 4 columns 
:set shiftwidth=4 
:set noexpandtab 
:gg=G ! convert the whole file to tabs 
:set tabstop=2 !display a tab as 2 columns 
:set shiftwidth=2 

Wenn Sie bereit sind, Ihre Arbeit einreichen,

:set tabstop=4 
:set shiftwidth=4 
:set expandtab 
:%retab 

Sollte es zurück konvertieren.

4

Die Hilfe enthält ein Beispiel für einen ähnlichen Anwendungsfall mit unterschiedlichen Laschenbreiten, siehe :help retab-example.

, dass die Anpassung an den Halbieren/Verdoppelung Plätze:

:autocmd BufReadPost,BufWritePost * %substitute/^\(\+\)\1/\1/e 
:autocmd BufWritePre    * %substitute/^ \+/&&/e 
+0

erweitert werden Das ist großartig ! Läuft es auf allen Dateien oder nur auf dem aktuellen? –

+0

Mit '*', auf allen. Unter ': help autocmd-patterns' erfahren Sie, wie Sie das beeinflussen können. –

6

Das ist das Gegenteil von dem, was here gefragt wurde.

Ja, Sie können! Wenn Sie die Option "Verbergen" haben, können Sie dies ausprobieren.

:syntax match spaces// conceal cchar= "Don't forget the space after cchar! 
:set concealcursor=nvi 
:set conceallevel=1 

Hier sind, was diese Befehle tun:

  • der Ersatzzeichen
  • Halten Sie Text unter dem Cursor für den normalen verborgen 1 Platz für 2 Räume Set, visuelle und einfügen Modi
  • aktivieren Verbergen von Text mit einem Zeichen

Sie müssen noch Ihre tabstop, 01 setzenund shiftwidth zu 4, aber es sieht und fühlt wie es ist 2 aus! Wenn Sie jedoch die Datei schreiben, ist es wirklich 4.

Wenn Sie Verschleierung machen wollen aus können Sie eines von zwei Dingen tun:

  1. Remove kaschieren Regel :syntax clear spaces oder
  2. verborgen Allow Text unter dem Cursor :set concealcursor=
+2

Ich musste auch hinzufügen: Set concealvel = 1, bevor dies funktioniert – timmow

+0

Gibt es einen Weg zum Gegenteil? Stellen Sie 2 Leerzeichen ein, um wie 4 Leerzeichen zu erscheinen? – Uri

+0

@Uri Siehe https://stackoverflow.com/questions/14514336/gvim-show-4-spaces-but-save-2-spaces-tabs. Hinweis, ich habe es nicht ausprobiert. – Balthamos

Verwandte Themen