Frage

Ich versuche, meine Finger auf heimische Reihe zu halten, so viel wie möglich.

alle Klammern Typing macht mich weg von dort ein gutes Stück.

Ich benutze Emacs; die Klammern selbst sind kein Problem, ich bin zufrieden mit ihnen. Und Ich mag es nicht Modi, die sie für mich automatisch ein.

Ich habe darüber nachgedacht, die eckigen Klammern Remapping kehrt zu Klammern und umgekehrt. Ist das eine gute Idee? Was macht alle anderen tun?

War es hilfreich?

Lösung

Ich persönlich würde die tödliche Kombination aus Emacs empfehlen, SLIME paredit.el Paredit können Sie Pseudo-semantisch den Lisp-Code auf sexp Ebene bearbeiten, und das macht die Klammern fast vollständig verschwinden. Sie können sexps bewegen, als ob sie einfache Worte sind und sie sogar mit nur ein paar Tastenhüben mutieren. Es gibt auch eine kleinere Modus namens Rotschenkel , die mit Paredit in Verbindung funktioniert und dass bietet mehr Leistung.

Betrachten Sie einfach diese Beispiele (| ist die Position des Cursors):

(foo bar (baz| quux) zot) + C-( => (foo (bar baz| quux) zot)
(foo (bar |baz) quux zot) + C-) => (foo (bar |baz quux) zot)

(foo (bar baz |quux) zot) + C-{ => (foo bar (baz |quux) zot)
(foo (bar |baz quux) zot) + C-} => (foo (bar |baz) quux zot)

Ich habe einige ernsthafte Common Lisp-Programmierung in meiner Zeit getan und paredit hat sich mir von unschätzbarem Wert sein. Ich kann nicht einmal denken, ohne meine Toolbox nicht-trivial LISP Code zu schreiben. Und nach allem, das ist so, wie es sein sollte; Sie sollten nie Ihre Klammern zählen oder passen müssen ... wenn Sie Paredit beherrschen, nur die Klammern von vor Ihren Augen verschwinden.

Remapping die [] zu () wird dazu beitragen, aber Sie werden die Pflege viel mehr, nachdem Sie mit Paredit starten.

Sie können ferner die benutzen LISP bestimmte Teile von meiner Punkt-Emacs .

Andere Tipps

Mit vielen Nicht-US-Tastatur-Layout, die Eingabe eines eckigen Klammern oder Klammern ist noch schwerfälliger als die manuelle Eingabe Klammern, wie auch immer, die Programmierung in den meisten Sprachen sehr belastenden macht, so du glücklich schätzen. ;)

Was mich betrifft, ich benutze ein Programmierer freundliche Nicht-Standard-Tastatur-Layout, das mir Klammern über [Super] -j und [Super] -k geben können.

Ich nehme meine Finger weg von den Home-Tasten ....

Ich habe Fußpedale. LeftFoot = open paren, RightFoot = close paren.

Nun, ich weiß nicht, aber ich weiß nicht Lisp verwenden. Es scheint nicht, wie eine schlechte Idee, though.

Könnten Sie eine Variation Lisp vorstellen, die Vertiefung statt Pars verwendet? (Eine Seite aus der Python-Spezifikation unter)

Ich habe versucht, in Emacs Remapping, aber es schafft neue Probleme: sagen Sie in einem Terminal-Fenster durch ssh gerade bearbeiten und Sie einen Ausschnitt in das Fenster einfügen; Pars und Klammern dann erhalten in Ihrem Einfügen ausgetauscht, nicht nur Ihre Eingabe. Wenn Sie dies versuchen, neu zuordnen auf einem niedrigeren Niveau in Ihrem System, wie xmodmap.

(Natürlich ist das offensichtlich ein anderes Problem wird mit anderen Computern ohne Remapping. Das war zu lästig, wenn auch erträglich.)

I remapped [], um () mit xmodmap und Vergleichbares. Es war ein bisschen komisch Gewöhnung Code in Sprachen zu schreiben, die [] verwenden, aber wie jede Änderung, erhalten Sie daran gewöhnt. unshifted Pars in Lisp zu haben, ist schöner als nicht unverschobene Klammern in anderen Sprachen haben, so dass es funktioniert.

Wie auch immer, hier ist die notwendige xmodmap Beschwörung für meine US-Tastatur:

!! swap () and []
keycode  18 = 9 bracketleft
keycode  19 = 0 bracketright
keycode  34 = parenleft braceleft
keycode  35 = parenright braceright

"... so viele parenethesis"

Das erste, was ich tat, war binden ‚(‘ Schlüssel für die Sequenz ‚(‘ + ‚)‘ + rechts (), so dass meine Klammer Auto Gleichgewicht, so dass nur halb so verließen viele zu geben, wenn neuen Code zu schreiben.

Sie wollen auch eine bequeme Möglichkeit, ein paren zu navigieren out - binden C] in die Sequenzsuche ( ‚)‘) + rechts (). Authoring wird jetzt kürzer, da Sie nicht die Hände Position weg von der nach Hause nehmen müssen -. Geben Sie einfach C-] jedes Mal, wenn ein S-ausdr vervollständigen

Das nächste, was ich tat, war ein Schlüssel zu einem Unterprogramm binden, die ein vorhandenes Element auf der aktuellen Liste drückt ... also, wenn // der Cursor-Position ist, dann wird dieser Befehl umwandeln:

(if (< //) (+ x 1) 
    (x) 
  (y))

(if (< (+ x 1) //)
    (x) 
  (y))

drücken effektiv ein Element von rechts in der aktuellen Liste - sehr nützlich für die vorhandenen Code zu bearbeiten. Die Sequenz ‚(‘, ‚<‘, CS-], Raum, ‚2‘ fügt „vergleichen weniger als 2“ zu einem bestehenden Ausdruck. In Kombination mit C-], auf diese Weise können Sie aus vorhandenen sehr schnell neue Ausdrücke bauen.

@jamesnvc, Ich glaube nicht, über die Bindung () auf [] -Tasten ... Ich werde versuchen, dass müssen, thx!

Ich habe meine Finger weg von der Grundlinie zu nehmen, alle anderen Schaltnummer Betreiber zu erreichen, so dass ich nie viel darüber nachgedacht.

Und wenn Sie ein links Pars Typen, Elektro-Pars gibt Ihnen das Recht.

Wenn Sie die Klammern mehr als die eckigen Klammern verwenden, mit allen Mitteln, neu zuordnen entfernt. Ich sehe nicht, wie es noch mehr Probleme aufwerfen könnte, als, sagen wir, ein Linkshänder ihre Maustasten tauschen.

Wenn ich Code ich schreibe, ich geben in der Regel viel mehr Zeit denken und meinen Code zu lesen, als ich sie eingeben. Ich habe ein paar Mal in der Vergangenheit versucht, die Dvorak-Tastatur-Layout zu wechseln, aber mir fehlt offensichtlich die Motivation, weil ich viel schneller eingeben können, als ich denken kann. Programmiersprache Syntax ist ein ähnliches Problem -. Solange ich Code eingeben kann, ohne die Tastatur zu verlassen (. Dh wäre schlecht mit der Maus), ich bin glücklich

Meistens ich gebe ihnen nur, aber gelegentlich, ich benutze M- (und M-) (vor allem, wenn ich eine LET bin Zugabe Bindung „spät in der Stufe“), die entsprechende nAnzahl von Ausdrücken zu umschließen.

Ich habe auch meine (Dvorak) Tastaturlayout (via xmodmap), um die Klammern ( "[]") und Pars in Verbindung mit paredit-mode zu wechseln (was in der Tat einige gewöhnungs dauert).

verwende ich paredit und Paar-Modus-Pakete, aber für schnelle Klammer Typisierung I elektrisch-Punkt-Strich eine Doppelstunde in a () auf einer 5 ms Verzögerung ersetzen (wenn ich langsam Typen bekomme ich zwei Punkte dann ). Es ist ein wunderbares Paket (ich etwas für meine persönliche Präferenz gehackt, wie ich mit Dvorak-Tastatur eingeben, ich den Strich Schlüssel durch einen Schrägstrich ersetzt (// bin nicht so häufig in Lisp)).

das Chaos in Pars zu vermeiden, füge ich ein Paket mit dem Namen ‚Highlight-Klammern zu meinem Werkzeug-Set, und für maximale Effizienz auf sexp grabbings oder Textnavigation im Allgemeinen, ich benutze vimpulse auch (wie ich ein Vim Süchtiger sind).

DrScheme hat die Tastenanschläge für Pars und Platz standardmäßig gekippt Klammern. Es hat auch eine Funktion, wo es Vermutungen auf magische Weise, welche der beiden Sie meinten, so erreicht man selten für Shift-9.

Quack hat eine ähnliche Funktion zu den DrScheme.

DivaScheme (mein Editor), ist etwas ganz anderes. Es bearbeitet am sexp Ebene, so dass die Pars nicht mehr im Weg sind.

Rebind Caps Lock auf "(" und haben den Editor Auto insert ")" für Sie.

(Dies hilft auch für andere Sprachen mit vielen Klammern, zum Beispiel HTML ...)

Ich verwende Vim mit vim-sexp und vim-sexp-Mappings-for-regular-Personen haben dann kartiert <leader>u mich innen im normalen Modus zu schalten von ein neues (.

map <leader>u i(

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top