Seite 1 von 1

VIM und Standardtextblöcke

Verfasst: Donnerstag 6. November 2008, 06:12
von Pekh
Hallo zusammen!

Ich habe mal eine Frage an die VIM-Nutzer unter Euch: In Python-Dateien gibt es ja in der Regel eine ganze Reihe von Zeilen, die sich zumindest innerhalb eines Projektes nicht ändern und in allen Dateien zum Einsatz kommen. Ich denke hier an die Shebang, Encoding, Autor- und Lizenzinformationen sowie einige Imports, die man eigentlich immer macht (__future__). Bisher habe ich solche Zeilen in einer separaten Datei definiert und "importiere" sie mittels ':r' . Was mich an dieser Lösung noch mit am meisten stört, ist die dabei entstehende Leerzeile ganz am Anfang der Datei, die ich dann manuell entfernen muß. Das ist zwar schon ein Riesenfortschritt gegenüber der manuellen Eingabe, ist aber doch irgendwo lästig.

Aber VIM wäre nicht VIM wenn es nicht noch eine elegantere Lösung für dieses Problem gäbe. Und da wollte ich mich jetzt mal von Euch inspirieren lassen. :D

Also: Wie macht Ihr das? Welche Plugins benutzt Ihr ggf.?

Edit: Der Befehl heißt natürlich ':r' , nicht ':\r' . Guten Morgen. :lol:

Verfasst: Donnerstag 6. November 2008, 06:42
von str1442
Viele die den Mac OS X-Editor TextMate kennen, werden seine Features für Codeschnippsel fehlen. Vim bot zwar mittels der Abbreviations die Möglichkeit Codeschnippsel einzufügen, snippetsEmu führt dies aber noch viel weiter. Damit ist es möglich Schnippsel mit Platzhaltern zu verwenden und somit möglichst große Stücke Quellcode aus den Schnippseln zu generieren. Im Moment ist die Anzahl der bereits verfügbaren Schnippsel eher klein, aber man kann ohne weiteres eigene Schnippsel selbst definieren.
Aus dem Wiki.

Ich selbst benutze derartiges aktuell noch nicht, da ich doch recht schnell tippe und außer Shebang eigentlich nichts per se hinzufügen muss. Hat aber auch was mit der Faulheit zu tun.

Re: VIM und Standardtextblöcke

Verfasst: Donnerstag 6. November 2008, 08:39
von Leonidas
Pekh hat geschrieben:Aber VIM wäre nicht VIM wenn es nicht noch eine elegantere Lösung für dieses Problem gäbe. Und da wollte ich mich jetzt mal von Euch inspirieren lassen. :D
Steht doch im Wiki, [wiki]Python-Programmieren mit Vim#Snippetsemu[/wiki], man muss es nur lesen ;)

Verfasst: Donnerstag 6. November 2008, 12:28
von tiax
wer dafür kein Plugin installieren müssen möchte, kann folgendes auch nach ~/.vim/ftplugin/python.vim schreiben:

Code: Alles auswählen

ia pyhead #!/usr/bin/env python<CR># -*- coding:utf-8 -*-<CR><CR>"""
ia iftrick if __name__ == '__main__':<CR>    main()

Verfasst: Donnerstag 6. November 2008, 16:31
von cofi
Ich benutze:

Code: Alles auswählen

iabbrev _py #!/usr/bin/env python<cr># -*- coding utf-8 -*-<cr>
D.h. mehr oder weniger das gleiche wie tiax, nur halt in der .vimrc ;)

Verfasst: Freitag 7. November 2008, 11:35
von Pekh
Vielen Dank für eure Antworten. Von Abbreviations bzw. SnippetsEmu hatte ich zuvor schon gehört / gelesen, sie aber irgendwie nicht als Lösungsansätze für mein Problem wahrgenommen. Es klang für mich irgendwie mehr nach einer Art Codevervollständigung. Da ich eine solche nicht gebrauchen kann habe ich die entsprechenden Fährten nicht weiter verfolgt. Ehrlich gesagt gefällt mir mein bisheriger Ansatz aber besser, was irgendwo aber auch eine gute Erkenntnis ist. :)

Vielen Dank noch einmal und bis zum nächsten Mal

Verfasst: Freitag 7. November 2008, 13:38
von audax

Code: Alles auswählen

map <F3> :r ~/docs/python/tmp.py <CR> 1Gdd
Warum so kompliziert? :D