So verwenden Sie in vim nur Tabulatoren (kein Leerzeichen)

76

Ich bevorzuge es zu verwenden tabals white space(kann ein wenig anders sein als die meisten anderen)

Aber ich habe festgestellt, wenn ich Enteram Ende der Zeile drücke, werden einige Leerzeichen hinzugefügt , aber keine Tabulatoren . Also muss ich sie löschen und die Tabulatortaste drücken .

Ich möchte wissen, wie man vim wie folgt einstellt:

  1. Verwenden Sie nur die Registerkarte, um die Zeilen einzurücken
  2. Ein Tab sieht aus wie 4 Leerzeichen, ist aber tatsächlich ein Tab
  3. Wenn Sie enteram Ende einer Zeile drücken, wird die neue Zeile nur mit Tabulatoren gestartet

Ich habe eine Weile danach gegoogelt, aber keine gute Antwort gefunden. Danke im Voraus


AKTUALISIEREN

Die Antwort, die @Alok gegeben hat, funktioniert in den meisten Fällen gut. Aber ich habe gerade festgestellt, dass es manchmal vom Dateityp abhängt. Wenn Sie beispielsweise eine hamlDatei bearbeiten und eine haml.vimin Ihrer Datei vorhanden ist vimfiles/indent/, werden alle Registerkarten in konvertiert space. Wenn Sie also tabnur möchten, dass dies der Fall ist , sollten Sie die entsprechende Einrückungsdatei ändern (oder löschen).

Freilauf
quelle
Versuchen Sie, anstatt die installierten Dateien zu ändern, Ihre überschreibenden Einstellungen zu übernehmen $HOME/vimfiles/after/indent/haml.vim. Siehe :help after-directoryfür weitere Informationen.
Nefrubyr
2
Es ist üblich, unterschiedliche Tabulator- / Leerzeicheneinstellungen für unterschiedliche Dateitypen zu haben. Schauen Sie sich meinen Screencast auf Vimcasts.org an, der zeigt, wie Sie Leerzeicheneinstellungen für verschiedene Dateitypen festlegen . Diese Lösung verwendet Ihr vimrc. Wenn Sie jedoch viele verschiedene Dateitypen einrichten möchten, bevorzugen Sie möglicherweise das von Nefrubyr vorgeschlagene Nachverzeichnis.
Nelstrom
Der Trick / after / indent funktioniert auch, um diese lästigen Leerzeichen in Python-Dateien zu entfernen. Die fehlerhafte Datei lautet ftplugin / python.vim. Kopieren Sie einfach die Zeile mit setlocal und kopieren Sie sie in eine leere Datei, wie von @Nefrubyr vorgeschlagen , bearbeiten Sie es und stellen Sie die geistige Gesundheit wieder her.
Paul

Antworten:

104

Die Einstellungen, die Sie suchen, sind:

set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4

Als einzelne Zeile:

set autoindent noexpandtab tabstop=4 shiftwidth=4

autoindentkann je nach Geschmack durch smartindentoder ersetzt werden cindent. Schauen Sie sich auch an filetype plugin indent on.

http://vim.wikia.com/wiki/Indenting_source_code

Alok Singhal
quelle
Wie @freewind sagte, funktioniert es beim Arbeiten mit .hamlDateien nicht gut . In meinem Fall verwende ich vim janus und füge nur die vorgeschlagene einzelne Zeile hinzu, aber es funktioniert nicht für hamlDateien. Irgendeine Idee?
Alexventuraio
4
Fügen Sie softtabstop=-1auch hinzu.
Walf
Wenn Sie neovim verwenden, schauen Sie sich das an, :help optionda mindestens "autoindent und noexpandtab" Standardoptionen sind.
SergioAraujo
Gibt es eine schnelle Möglichkeit, zwischen Tabulatoren oder Leerzeichen hin und her zu wechseln? Soll ich eine neue SO-Quest eröffnen?
fde-capu