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).


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.