vim: Entfernen Sie den vorherigen Codeeinzug und konvertieren Sie ihn in einen anderen

723
ramgorur

Ich habe ein Projekt mit mehreren Dateien (mehr als 100), die Codes sind im Whitesmiths- Stil geschrieben, aber ich möchte sie in den K & R-Stil einrücken. Ist es möglich, vim automatisiert zu verwenden?

Zum Beispiel habe ich ein Emacs-Lisp-Skript, um dies zu erreichen -

(progn  (find-file "{}")  (mark-whole-buffer)  (setq indent-tabs-mode nil)  (untabify (point-min) (point-max))  (indent-region (point-min) (point-max) nil)  (save-buffer)) 

Ich habe mich gefragt, ob es einen ähnlichen Trick gibt, den man mit vim machen könnte.

Update: Ich habe ein weiteres nettes Werkzeug namens astyle gefunden, das die automatische Einrückung für verschiedene Sprachen (mit einer großen Auswahl an Stilen) unterstützt.

3
Bemerkenswert ist [GNU Indent] (http://www.gnu.org/software/indent/), das dies von alleine macht und gut getestet ist. Vermeiden, das Rad neu zu erfinden usw. Daniel Andersson vor 11 Jahren 4

2 Antworten auf die Frage

5
Ingo Karkat

Übergeben Sie entweder alle C-Dateien an die ausführbare Datei von Vim vim file1.c dir/file2.coder fügen Sie sie als Argument von Vim hinzu (siehe :help file-searching):

:args **/*.c **/*.h 

Dann können Sie sie über bearbeiten :argdo. Vim verfügt über einen eingebauten Einrückungsmechanismus oder es kann ein externer Code-Formatierer verwendet werden. Lesen Sie die Details unter :help C-indenting.

Nachdem Sie die Einstellungen für den Einzug ( 'cindent', 'cinoptions'usw.) konfiguriert haben, können Sie alle Dateien über übernehmen

:argdo execute 'normal! ggVG=' | update 

( ggVGwählt den gesamten Puffer im visuellen Modus aus und =formatiert ihn dann erneut.)

Sie haben die besten Vim-Antworten :) +1 Ярослав Рахматуллин vor 10 Jahren 0
4
Ярослав Рахматуллин

Mann Einzug * Scroll Scroll Scroll *

 The Kernighan & Ritchie style is used throughout their well-known book "The C Programming Language". It is enabled with the ‘-kr’ option. The Kernighan & Ritchie style corresponds to the following set of options:  -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -nprs -npsl -saf -sai -saw -nsc -nsob -nss 

Z.B:

indent -kr source.cpp