Denkst / schreibst du anders in vim und emacs?

9

In vielen Skripten, die ich schreibe, konstruiere ich oft Programme in einem "funktionalen Stil". Das heißt, ich definiere am Anfang sehr viele Funktionen und übernehme später diese Funktionen. Dies führt zu einer Folge von geschachtelten Funktionsaufrufen, wobei ich Folgendes austippe:

  1. Funktionsname
  2. seine Argumente
  3. nächster Funktionsname
  4. seine Argumente

... und so weiter.

In Fällen, in denen Funktionen zusammen "piped" sind, ist die Ausgabe einer Funktion ein Argument (normalerweise das erste, aber nicht immer) zur nächsten Funktion, deren Ausgabe ein Argument für die nächste Funktion ist, und ad unendlich. In der Präfix-Notation können die Tastenbewegungen sehr unruhig sein, wenn Sie diese Sequenz von links nach rechts eingeben. Wie würden Sie beispielsweise die zweite Zeile des folgenden [Python] -Beispiels eingeben (~ mul ~ ist multiply, ~ truediv ~ ist divide)?

%Vor%

Wenn ich den gleichen Satz von Operationen linear schreiben müsste (von links nach schreiben, ohne herumzuspringen), verwende ich eher die Notation der Funktionszusammensetzung. Aufbauend auf meinem vorherigen Beispiel in Python, könnte ich

schreiben %Vor%

Ich denke, das liegt daran, dass ich jede Funktion mit ihren eigenen Argumenten assoziiere und sie lieber nacheinander austippe, anstatt Argumente für eine andere Funktion zu füllen, bevor die Argumentliste für die erste Funktion vollständig ist (wie zum Austippen erforderlich) das erste Beispiel von links nach rechts).

Das habe ich bemerkt, weil ich lange Zeit Emacs-Benutzer war und erst kürzlich Viper / Vimpuse und Vim ausprobiert habe. In Emacs könnte ich etwas wie

machen
  1. [Geben Sie den Funktionsnamen und die Argumente ein]
  2. C-a
  3. [Geben Sie den nächsten Funktionsnamen ein]
  4. C-e
  5. [Rest der Argumente ausfüllen]
  6. C-a
  7. [Geben Sie den nächsten Funktionsnamen ein]
  8. C-e
  9. [Rest der Argumente ausfüllen]

... und gelegentlich M-b, M-f, M-DEL (Rückwärts-Wort, Vorwärts-Wort, Rückwärts-Kill-Wort), wenn ich etwas vermassele oder vergesse.

Ich habe kürzlich von C-o in vim erfahren, was ein Lebensretter ist - aber ich finde, dass die äquivalenten Schlüssel

wären
  1. [Geben Sie den Funktionsnamen und die Argumente ein]
  2. C-0 0
  3. [Geben Sie den nächsten Funktionsnamen ein]
  4. C-o $
  5. [Rest der Argumente ausfüllen]
  6. C-0 0
  7. [Geben Sie den nächsten Funktionsnamen ein]
  8. C-o $
  9. [Rest der Argumente ausfüllen]

... und der Rest; Rückwärtswort-, Vorwärtswort- und Rückwärtskillwortäquivalente wären C-o b und C-o w und C-w.

Das hat mich dazu gebracht zu denken, dass ich, um in vim zu programmieren, ein größeres Arbeitsgedächtnis aufbauen muss, damit ich die Konstruktion einer Funktion unterbrechen kann, während ich eine andere ausfülle, und so weiter den Stapel hinunter. Auch beim Erstellen von Textdokumenten finde ich, dass ich ziemlich oft bearbeite (kill, copy, yank), sogar bevor ich einen vollständigen Gedanken beende, der für vims Betriebsstil von "Bleib im Normalmodus, Platzen von Text im Einsatz" nicht so zugänglich ist -Modus und zurück zum normalen Modus ", der davon ausgeht, dass ich in der Lage bin, etwas zu produzieren, das es wert ist, während meiner Vorstöße in den Einfügemodus bearbeitet zu werden. Um vim zu verwenden, stelle ich fest, dass ich mehr überlege, wenn ich tippe, um die Häufigkeit des Umschaltens zwischen den Modi zu reduzieren. Liegt das daran, dass ich von Natur aus spastisch bin, oder wenn ich erst einmal einen geeigneten Bereich von vim-Tastenbefehlen für das Muskelgedächtnis beherrsche, werde ich aufhören zu denken, dass sie so anders sind?

Wenn Sie sowohl in emacs als auch in vim programmieren, denken Sie darüber nach und konstruieren Ihre Programme und Textblöcke in jedem Editor anders?

    
crippledlambda 21.09.2010, 02:01
quelle

1 Antwort

4

Ich habe vi aus den guten alten Tagen von 1992 benutzt und jetzt benutze ich Emacs seit 2001. Ich habe keinen Unterschied in meinem Denken beim Programmieren von Funktionen und Code-Blöcken bemerkt. Beide Redakteure haben ihre eigenen Besonderheiten und Arten, Dinge zu tun, aber sie sind nicht so stark, dass sie Ihre Art zu denken und wie Sie programmieren verändern können.

Ich habe immer versucht, Wege zu finden, um das zu tun, was ich vorhabe. Ich lasse mich von meinem Redakteur nicht zwingen, etwas zu tun, was ich nicht will. Wenn ich prozedurale Programmierung eines neuen Stückes Code mache, verwende ich die Technik, die man "Wunschdenken" nennt, nämlich in Struktur und Interpretation von Computerprogrammen erwähnt :

Sie stellen sich in der perfekten Welt vor und verfügen über alle notwendigen Verfahren. Sie kodieren Ihren Algorithmus mit all den hilfreichen Funktionen, die Sie implementieren müssen, aber Sie haben nur Prototypen für den Moment. Es ähnelt einem Top-Down-Ansatz.

    
Jérôme Radix 20.09.2010, 20:42
quelle

Tags und Links