Question

J'essaie de garder mes doigts sur la ligne de la maison autant que possible.

En tapant toutes les parenthèses qui me fait bouger de là un peu juste.

J'utilise Emacs; les parenthèses sont eux-mêmes pas de problème, je suis à l'aise avec eux. Et je n'aime pas les modes qui les tapent automatiquement pour moi.

J'ai pensé à reconfiguré entre crochets à des parenthèses et vice versa. Est-ce une bonne idée? Qu'est-ce que tout le monde fait?

Était-ce utile?

La solution

Je recommande personnellement le combo mortel de Emacs , BOUE et paredit.el Paredit vous permet de pseudo-sémantiquement modifier le code LISP au niveau de sexp, et qui rend les parenthèses disparaissent presque complètement. Vous pouvez vous déplacer sexps comme si ce sont des mots simples et même les muter avec juste quelques coups clés. Il y a aussi un mode mineur appelé gambette qui fonctionne conjointement avec Paredit et que fournit plus de puissance.

Considérez ces exemples simples (| est la position du curseur):

(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)

Je l'ai fait une programmation sérieuse Common Lisp dans mon temps, et paredit est avéré très précieux pour moi. Je ne peux pas même penser à l'écriture de code LISP non trivial sans ma boîte à outils. Et après tout ce qui est la façon dont il devrait être; vous ne devriez jamais avoir à compter ou correspondre à vos parenthèses ... une fois que vous maîtrisez Paredit, les parenthèses vont juste disparaître de devant vos yeux.

Réaffectation [] pour () va aider, mais vous cesser de se bien après que vous commencez à utiliser Paredit.

Ne hésitez pas à utiliser le parties LISP spécifiques de mon point-emacs .

Autres conseils

Avec de nombreuses configurations de clavier non-US, en tapant des crochets ou des accolades est encore plus lourd que des parenthèses de frappe, de toute façon, ce qui rend la programmation dans la plupart des langues très strainful, donc considérez-vous chanceux. ;)

Quant à moi, j'utiliser un programmeur-friendly disposition de clavier non standard qui me permet de taper entre parenthèses via [Super] -j et -k [Super].

Je prends mes doigts sur les clés de la maison ....

Je pédales. Piedgauche = paren ouvert, RightFoot = proche paren.

Eh bien, je ne sais pas, mais je ne l'utilise Lisp. Il ne semble pas être une mauvaise idée, cependant.

Pouvez-vous imaginer une variation sur Lisp qui a utilisé indentation au lieu de parens? (En prenant une page de la spécification Python)

J'ai essayé remappage dans Emacs, mais il crée de nouveaux problèmes: dites que vous modifiez dans une fenêtre de terminal via ssh et vous collez un extrait dans la fenêtre; puis parens et les supports se permutés dans votre collant, pas seulement votre frappe. Si vous essayez cela, remapper à un niveau inférieur dans votre système, comme xmodmap.

(Bien sûr, l'autre problème évident utilise d'autres ordinateurs sans votre remappage. C'était une nuisance aussi, mais supportable.)

Je remappés [] à () avec xmodmap et comme elle. Il était un peu bizarre se habituer à écrire du code dans les langues qui utilisent [], mais comme tout changement, vous y habituer. Ayant parens dans Lisp est non transposées plus agréable que de ne pas avoir crochets dans d'autres langues non transposées, il fonctionne.

Quoi qu'il en soit, voici le incantatoire xmodmap` nécessaire pour mon clavier américain:

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

"... tant parenethesis"

La première chose que j'ai été lier le, donc ma parenthèse balance automatique « ( » clé de la séquence « ( » + « ) » + à droite (), laissant la moitié autant de gauche à saisir lors de l'écriture du nouveau code.

Vous voulez également un moyen pratique pour naviguer sur un paren - lier C] à la recherche de séquence ( « ) ») + droit (). Création devient plus courte maintenant, comme vous n'avez pas besoin de prendre les mains sur la position de la maison -. Il suffit de taper C] chaque fois que vous remplissez un S-expr

La prochaine chose que je ne se lie une clé à un sous-programme qui pousse un élément existant sur la liste en cours ... donc si // est la position du curseur, cette commande transformera:

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

à

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

En effet poussant un élément de la droite dans la liste actuelle - très utile pour éditer le code existant. La séquence « ( », « < », CS-], l'espace, « 2 » ajoute « comparer moins de 2 » à une expression existante. Combiné avec C], cela vous permet de construire de nouvelles expressions très rapidement de ceux qui existent déjà.

@jamesnvc, Je ne pensais pas à lier () à touches [] ... Je vais devoir essayer, thx!

Je dois prendre mes doigts sur la ligne de la maison pour atteindre tous les autres opérateurs numéro de changement, donc je ne pensais jamais beaucoup.

Et une fois que vous tapez une gauche-parens, électrique-parens vous donnent le droit.

Si vous utilisez les parenthèses plus que les crochets, par tous les moyens, remapper loin. Je ne vois pas comment cela pourrait poser plus de problèmes que, disons, un gauchiste échangeant ses boutons de la souris.

Quand je l'écriture de code, je passe généralement beaucoup plus de temps à penser et à la lecture de mon code, que je ne le taper. J'ai essayé deux ou trois fois dans le passé pour passer à la disposition du clavier Dvorak, mais je manque de motivation évidente parce que je peux taper beaucoup plus rapide que je peux penser. la syntaxe du langage de programmation est un problème similaire -. aussi longtemps que je peux taper le code sans quitter le clavier (.-à-dire à l'aide de la souris serait mauvais), je suis heureux

La plupart du temps, je les taper juste, mais de temps en temps, j'utilise M- (et M-) (surtout quand je suis l'ajout d'un LET contraignant « fin à l'étape »), pour entourer la nNombre pertinente des expressions.

J'ai aussi changé (Dvořák) disposition du clavier (via xmodmap) pour passer les crochets ( « [] ») et parens, conjointement avec paredit-mode (qui ne prend en effet un certain temps pour s'y habituer).

J'utilise des paquets de paredit et en mode paire, mais pour taper entre parenthèses rapide J'utilise électrique points et le tableau de bord pour remplacer une double période dans un () sur un délai de 5 ms (si je tape lentement, je reçois deux points alors ). Il est un ensemble merveilleux (je piraté un peu pour ma préférence personnelle, comme je tape avec le clavier Dvorak, je l'ai remplacé la clé du tableau de bord par une barre oblique (// est pas si fréquent en Lisp)).

Pour éviter le désordre dans parens, j'ajouter un paquet nommé « highlight-parenthèses à mon jeu d'outils, et pour une efficacité maximale sur grabbings de sexp ou navigation texte en général, j'utilise aussi vimpulse (comme je suis un accro VIM).

DrScheme a la séquence de touches de parenthèses et des crochets basculés par défaut. Il a également une fonction où il devine par magie que l'un des deux que vous vouliez dire, si vous atteignez rarement décalage 9.

Quack a une fonction similaire à celle de DrScheme.

DivaScheme (mon rédacteur en chef), est quelque chose de complètement différent. Il édite au niveau de sexp, de sorte que les parens ne sont plus de la manière.

bouchons Rebind verrouillent à « ( » et avoir l'éditeur insertion automatique « ) » pour vous.

(Cela aide aussi pour d'autres langues avec beaucoup de supports, par exemple HTML ...)

Je vim avec vim-sexp et vim-sexp-mappings pour réguliers-personnes puis ont cartographié <leader>u pour me mettre en mode normal à l'intérieur de une nouvelle (.

map <leader>u i(

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top