VIM Wie kann ich VIM dazu zwingen, Wörter nach meiner Wahl zu ordnen?

327
Hellboy

Nun, ich schreibe und lerne. Ich möchte nur etwas Text auf diese Weise schreiben ....

- First line. Second line. Third line. 

Aber das Problem ist, dass die Linien auf diese Weise beginnen ...

- First line. Second line. Third line 

Siehst du den Unterschied? Nun, ich habe etwas recherchiert und einen Thread im Superuser gefunden, der die Verwendung empfiehlt: set smartindent. Ich habe es so gemacht. Es funktioniert. Aber das Problem ist, dass Vim tatsächlich gezwungen ist, von der letzten Zeile aus zu folgen. Jetzt, da ich Zeilen vom linken Rand des Editors beginne, beginnt Vim jede neue Zeile, wie im zweiten Beispiel gezeigt. Nun stellt sich die Frage, wie ich Zeilen schreiben kann, wie ich im ersten Beispiel gezeigt habe.

0

3 Antworten auf die Frage

0
Ingo Karkat

Warum erwarten Sie, dass der Redakteur immer den richtigen Einzug wählt? Durch das Konfigurieren einer bestimmten Einrückungseinstellung (wie die gute und die universelle Einstellung :set smartindent) erhalten Sie etwas, das meistens funktioniert. In diesen anderen Fällen können Sie immer manuell einrücken (mit <Tab>, vorausgesetzt, Sie sind richtig :set tabstop=... expandtabusw.), oder den Einzug nach dem Fakt mit >>und ändern <<.

Wenn Sie wirklich über eine bestimmte Syntax verfügen, bei der die Einrückungsregeln eher simpel und deterministisch sind (und keine der Standardeinzugseinstellungen immer funktioniert), müssen Sie einen benutzerdefinierten indentexprBefehl (cp. :help indent-expression) Schreiben .

Da es sich bei Ihrem Beispiel um Textformatierung handelt, ist dies nicht zutreffend, und Sie können 'smartindent'manuelle Korrekturen besser durchführen .

0
Ben

Anstelle von 'smartindent' würde ich stattdessen 'autoindent', 'formatlistpat' und 'formatoptions' entsprechend einstellen. Zum Beispiel:

" set up pattern to match list bullets and numbers let &l:formatlistpat='^\s*\%(\d\+[\]:.)}\t ]\d\@!\|[*-]\)\s*' " automatically format numbered or bulleted lists setlocal formatoptions+=n setlocal autoindent 

Im ersten Befehl können Sie beliebige "Aufzählungszeichen" innerhalb der [*-]Gruppe ersetzen .

Dadurch wird der Einzug für Sie beibehalten und beispielsweise für Sie auch angewendet. gqipSie müssen den Einzug jedoch selbst entfernen, wenn Sie eine neue Zeile eingeben, in der das Listenformat nicht angezeigt werden soll.

0
mMontu

Wenn Sie Textlisten erstellen möchten, sollten Sie das Vimwiki-Plugin überprüfen und die Optionen des Vim-Formats für andere Zwecke speichern.