Frage

Wie verhindere ich vim aus ersetzen Räume mit Tabs, wenn autoindent auf ist?

Ein Beispiel: Wenn ich zwei Registerkarten und 7 Felder am Anfang der Linie, und tabstop=3, und ich drücken Sie die Eingabetaste, die nächste Zeile hat vier Registerkarten und 1 Platz am Anfang, aber ich will nicht. ..

War es hilfreich?

Lösung

Es ist vielleicht eine gute Idee, nicht Tabs zu verwenden überhaupt.

:set expandtab

Wenn Sie alle Registerkarten in Ihrer Datei 3 Felder ersetzen (was ziemlich ähnlich aussehen tabstop=3):

:%s/^I/   /

(wobei ^I ist die TAB Zeichen)

Von der VIM-Online-Hilfe:

'tabstop' 'ts'      number  (default 8)
        local to buffer
Number of spaces that a <Tab> in the file counts for.  Also see
|:retab| command, and 'softtabstop' option.

Note: Setting 'tabstop' to any other value than 8 can make your file
appear wrong in many places (e.g., when printing it).

There are four main ways to use tabs in Vim:
1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
   (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
   will use a mix of tabs and spaces, but typing <Tab> and <BS> will
   behave like a tab appears every 4 (or 3) characters.
2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
   'expandtab'.  This way you will always insert spaces.  The
   formatting will never be messed up when 'tabstop' is changed.
3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
   |modeline| to set these values when editing the file again.  Only
   works when using Vim to edit the file.
4. Always set 'tabstop' and 'shiftwidth' to the same value, and
   'noexpandtab'.  This should then work (for initial indents only)
   for any tabstop setting that people use.  It might be nice to have
   tabs after the first non-blank inserted as spaces if you do this
   though.  Otherwise aligned comments will be wrong when 'tabstop' is
   changed.

Andere Tipps

  

alles, was ich will, ist die autoindented Linie genau wie die vorherige Zeile die gleiche Vertiefung Zeichen haben.

:help copyindent

  

'copyindent' 'ci' boolean (default off); lokal zu puffern; {Nicht in Vi}

     

Kopieren Sie die Struktur der bestehenden Linien einzurücken, wenn ein autoindenting   Neue Zeile. Normalerweise wird der neue Gedankenstrich wird durch eine Reihe von rekonstruiert   gefolgt Laschen durch Leerzeichen nach Bedarf (es sei denn, ‚expandtab‘ aktiviert ist,   in diesem Fall werden nur Leerzeichen verwendet). Das Aktivieren dieser Option macht die   neue Zeile kopieren, was auch immer Zeichen für Einrücken auf die verwendet wurden,   bestehende Linie. Wenn der neue Gedankenstrich größer ist als auf dem bestehenden   Linie, der verbleibende Raum in der normalen Art und Weise gefüllt ist.

     

Hinweis: 'copyindent' wird zurückgesetzt, wenn 'kompatibel' gesetzt.
  Siehe auch 'preserveindent' .

:help preserveindent

  

'preserveindent' 'pi' a href <= "http://www.vim.org/htmldoc/options. html # boolean“rel = "noreferrer"> boolean (default off); lokal zu puffern; {Nicht in Vi}

     

Wenn Sie den Einzug der aktuellen Zeile zu ändern, zu bewahren, so viel von der   indent Struktur wie möglich. Normalerweise wird der Gedankenstrich durch eine ersetzt   nach Bedarf Reihe von durch Leerzeichen gefolgt Laschen (es sei denn, ‚expandtab‘   aktiviert, wobei in diesem Fall nur Leerzeichen verwendet werden). Das Aktivieren dieser Option   bedeutet der Einzug als viele bestehende Zeichen wie möglich erhalten werden   für Einrücken und fügen Sie nur zusätzliche Tabulatoren oder Leerzeichen nach Bedarf.

     

Hinweis: Bei der Verwendung von „>>“ mehrmals der resultierenden Gedankenstrich ist eine Mischung aus   Laschen und Räume. Vielleicht möchten Sie diese nicht.
  HINWEIS: 'preserveindent' wird zurückgesetzt, wenn 'kompatibel' gesetzt
.   Auch finden Sie unter 'copyindent' .
  Verwendung:. Retab weißen Raum aufzuräumen

Sie können alle TAB konvertieren SPACE

:set et
:ret!

oder alle SPACE konvertieren TAB

:set et!
:ret!

Hier ist ein Teil meiner .vimrc:

set autoindent
set expandtab
set softtabstop=4
set shiftwidth=4

Das funktioniert gut für mich, weil ich unbedingt in meinem Quellcode nicht will Registerkarten. Es scheint, aus Ihrer Frage, dass Sie zwei Registerkarten und sieben Räume in der nächsten Zeile halten wollen, und ich bin nicht sicher, ob es einen Weg gibt vim zu lehren, dass Stil gerecht zu werden.

Vielleicht ist der Boden dieser kann Ihnen helfen?

  

Standard vi interpretiert die Tabulatortaste wahrsten Sinne des Wortes, aber es gibt beliebte vi abgeleiteten Alternativen, die klüger sind, wie vim. Um vim Registerkarte als `` Gedankenstrich ‚‘ Befehl anstelle eines Einsatzes-a-Register-Befehl zu interpretieren, dies zu tun:

set softtabstop=2

Wenn Sie alle Registerkarten ersetzen möchten mit Leerzeichen auf der Grundlage der Einstellung von ‚ts‘ können Sie verwenden: retab. Es kann auch das Gegenteil tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top