Skip to end of metadata
Go to start of metadata

Allgemeines VI Tuning

Hierzu haben sich natülich schon zig Millionen leute Gedanken darüber gemacht und es gibt imho keine "AllRound-Lösung" für jedermann

Cream bietet zumindest einen netten Anfang für all jene die total heiß auf alle möglichen (unnötigen) informationen sind und keinen Peil wie sies machen sollen.
Allen andren bietet das Projekt immerhin einige hilfreiche Ideen (wink)

Pixelbeat hat für Anfänger und vergessliche eine nette Liste der Vim-Commands

Ein weiteres nettes Tutorial habe ich bei interlinked.org gefunden.

Wie man in die vimrc Datei eingreift, beschreibt zu genüge Softpanorma

(no)deadkeys

Hintergrund:
X11, die grafische Oberfläche von *nix, kennt für die Tastaturlayouts mit Sonderzeichen einen sogenannte "nodeadkeys" mode.

Dies bewirkt, sofern aktiviert, dass auf jeden Tastendruck direkt ein Zeichen erscheint, es also kein "Toten Tasten" gibt.
Dies ist für Otto Normal n00b in Deutschland denke ich schon OK, nur leider lassen sich damit zB dann nur schwerlich französische Umlaute schreiben, denn beim Versuch den Accent "´" gefolgt von einem "e" zu tippen, bekommt man bestenfalls: "´e" anstelle von "é".

Problem:
Nun ist es so, dass auch Vim bestimmte Tasten für Sonderbelegungen nutzt.
<CRTL-^> bewirkt bei "nodeadkeys", dass man zwischen den beiden letzten, im Vim-Puffer gehaltenen Dateien "springen" kann.
Wenn "nodeadkeys" nun rausgenommen wird, wartet die Eingabe nach dem Zeichen "^" zunächst das nächste Zeichen ab und schreibt dann entweder den Umlaut oder im Falle von ^ gefolgt von <SPACE> nur das "Accent-de-circon-flex" (wink)

Ich bin aber ein Freund von "Umlauten" und nun funktioniert das "springe zur vorigen Datei" nicht mehr, was tun...

Lösung:
Die folgenden Zeilen in der vimrc hinterlegt bewirken, dass man mit <CTRL-B> nun zyklisch zwischen ALLEN Dateien des Buffers rumspringen kann.

nmap <C-B> :bp<CR>
vmap <C-B> <ESC>:bp<CR>
imap <C-B> <ESC>:bp<CR>

Ist das nicht toll (wink)

PHP Programmierung in VIm

hier ein Blogger und Namens Tobias Schlitt, der es sich nicht nehmen ließ umfangreich darüber zu berichten (wink)

PHP Documentator

weitere nette Blogeinträge von Tobias Schlitt:

Arbeit mit Versionierungstools (CVS / SVN)

hiermit sind dann nette Kommandos wie

:VCSVimDiff

möglich

Arbeiten mit Tags

damit das ganze überhaupt tut, brauchen wir ne tag-datei in der alles Verzeichnet ist. Das macht das Tool ctags welches neben c/C++ und > 10 weiteren Sprachen

auch PHP unterstützt:

da aber public / private / protected aus PHP5 noch nicht offiziell untertützt / interpretiert werden, brauchen wir noch nen Patch:

+static boolean isKeyword(const unsigned char *cp) {
+ if (((strncmp ((const char*) cp, "abstract", (size_t) 8) h1. 0) &&
+ isspace ((int) cp 8))) {
+ return 8;
+ }
+
+ if (((strncmp ((const char*) cp, "public", (size_t) 6) 0) &&
+ isspace ((int) cp 6))) {
+ return 6;
+ }
+
+ if (((strncmp ((const char*) cp, "private", (size_t) 7) h1. 0) &&
+ isspace ((int) cp 7))) {
+ return 7;
+ }
+
+ if (((strncmp ((const char*) cp, "protected", (size_t) 9) 0) &&
+ isspace ((int) cp 9))) {
+ return 9;
+ }
+
+ if (((strncmp ((const char*) cp, "static", (size_t) 6) h1. 0) &&
+ isspace ((int) cp 6))) {
+ return 6;
+ }
+ return 0;
+}
+

static void findPhpTags (void)
{
vString *name = vStringNew ();

@@ -69,6 +97,15 @@

while (isspace (*cp))
cp++;

+
+ int cpa;
+ while (cpa = isKeyword(cp)) {
+ cp += cpa;
+ while (isspace (*cp))
+ cp++;
+ }
+
+

if ((const char)cp '$' && isVarChar1 ((const char)(cp+1)))
{
cp += 1;

</pre>

untested but topic related

Projekte in VIm

(PHP) Debugger im VIm

The Killer-App schlechthin:

Vorraussetzungen:

LINKS

  1. Ein weiterer "Spinner" wie ich der gerne Vim nutzt ist Christian Habermann, viel Tools für die Arbeit mit C/C++
  2. Andrei Zmievski hält viele Vorträge zu diesem Thema, hat eine Super Präsi dazu auf Lager und direkt ein ganzes ZIP File mit einem ganzen Set aus Konfigurationen, Keymappings und Plugins speziell für die arbeit mit PHP. Teilweise werden oben genannte Sachen genutzt, teilweise andre..
  • No labels