VIM und Standardtextblöcke

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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:
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

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()
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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 ;)
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

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