Domanda

cerco di tenere le dita nel braccio della casa il più possibile.

Digitando tutte le parentesi mi fa allontano da lì un bel po '.

Io uso Emacs; le parentesi stesse sono nessun problema, mi sento a mio agio con loro. E non mi piace modalità che li tipo per me automaticamente.

Ci ho pensato rimappatura le parentesi quadre alle parentesi e viceversa. E 'questa una buona idea? Cosa fanno gli altri?

È stato utile?

Soluzione

Io personalmente consigliamo la combinazione letale di Emacs , SLIME & paredit.el Paredit consente di modificare pseudo-semanticamente il codice LISP a livello sexp, e che rende le parentesi scompaiono quasi del tutto. È possibile muoversi sexps come se fossero parole semplici e anche li mutazione del 'solo un paio di colpi chiave. V'è anche un modo minore chiamato Pettegola che funziona in congiunzione con Paredit e che fornisce più potenza.

Consideriamo questi esempi semplici (| è la posizione del cursore):

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

Ho fatto qualche seria programmazione Common Lisp nel mio tempo, e paredit ha dimostrato di essere prezioso per me. Non posso nemmeno pensare di scrivere codice LISP non banale senza la mia cassetta degli attrezzi. E dopo tutto questo è il modo in cui dovrebbe essere; non si dovrebbe mai avere a contare o soddisfare le vostre parentesi ... una volta padrone Paredit, le parentesi sarà solo scomparire dal davanti ai vostri occhi.

Riassegnazione il [] per () vi aiuterà, ma si smetterà di preoccuparsi molto dopo di iniziare a usare Paredit.

Sentitevi liberi di utilizzare la porzioni LISP specifici dal mio dot-emacs .

Altri suggerimenti

Con molti layout di tastiera non-US, digitando parentesi quadre o graffe è ancora più ingombrante di parentesi di battitura, in ogni caso, il che rende la programmazione nella maggior parte delle lingue molto strainful, in modo da considerare fortunato. ;)

Per quanto mi riguarda, io uso un layout di tastiera non standard programmatore-friendly che mi permette di digitare le parentesi direttamente via [Super] -j e [Super] -k.

mi prendo le mie dita al largo delle chiavi di casa ....

Ho pedali. LeftFoot = paren aperti, RightFoot = vicino paren.

Beh, non lo so, ma io non uso Lisp. E non sembra una cattiva idea, però.

Potreste immaginare una variazione su Lisp che ha usato il rientro al posto di parentesi? (Prendendo una pagina dalla spec Python)

Ho cercato rimappatura in Emacs, ma crea nuovi problemi: dici che stai modificando in una finestra di terminale attraverso SSH e si incolla un frammento nella finestra; poi parentesi e staffe vengono scambiati nel vostro incolla, non solo la digitazione. Se si prova, rimappare a un livello inferiore nel vostro sistema, come xmodmap.

(Naturalmente, l'ovvia altro problema sta usando altri computer senza la vostra rimappatura. Quello era un fastidio troppo, anche se sopportabile.)

I rimappato [] per () con xmodmap e piace. E 'stato un po' strano per abituarsi alla scrittura di codice in lingue che utilizzano [], ma come ogni cambiamento, ci si abitua ad esso. Avendo parentesi unshifted in Lisp è più bello di non avere parentesi unshifted in altre lingue, in modo che funziona fuori.

In ogni caso, qui è la formula magica xmodmap necessario per la mia tastiera USA:

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

"... così tanti parenethesis"

La prima cosa che ho fatto è stato legato l' '(' la chiave per la sequenza '(' + ')' + a destra (), quindi il mio bilanciamento automatico parentesi, lasciando la metà come molti a sinistra per digitare quando si scrive un nuovo codice.

Anche voi volete un modo conveniente per navigare fuori una parentesi - legare C-] alla ricerca di sequenza ( ')') + a destra (). Authoring si accorcia ora, come non è necessario prendere le mani fuori posizione iniziale -. Basta digitare C-] ogni volta che si completa un S-expr

La prossima cosa che ho fatto è stato legano una chiave per una subroutine che spinge un elemento esistente sulla lista corrente ... quindi se // è la posizione del cursore, allora questo comando trasforma:

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

a

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

In effetti spingendo una voce da destra nella lista corrente - molto utile per la modifica di codice esistente. La sequenza '(', '<', CS], Spazio, '2' aggiunge "confrontare a meno di 2" per l'espressione esistente. In combinazione con C-], questo consente di creare nuove espressioni molto rapidamente da quelli esistenti.

@jamesnvc, Io non pensare vincolante () per [] chiavi ... Dovrò provare che, thx!

devo prendere le mie dita al largo della fila di casa per raggiungere tutti gli altri operatori shift-numerici, quindi non ho mai pensato molto.

E una volta che si digita una sinistra-parentesi, elettrico-parens si danno il diritto.

Se si utilizzano le parentesi più che le parentesi quadre, con tutti i mezzi, rimappare via. Non vedo come si potrebbe porre più problemi rispetto, ad esempio, un mancino scambiando i suoi pulsanti del mouse.

Quando sto scrivendo codice, io in genere spendere molto più tempo a pensare e leggendo il mio codice, di me digitarlo. Ho provato un paio di volte in passato per passare al layout di tastiera Dvorak, ma mi manca la motivazione ovvia perché posso scrivere molto più velocemente di quanto io possa pensare. sintassi del linguaggio di programmazione è un problema simile -. finché posso digitare il codice senza lasciare la tastiera (. vale a dire utilizzando il mouse sarebbe male), sono felice

Per lo più, ho solo tipo, ma di tanto in tanto, io uso M- (e M-) (specialmente quando sto aggiungendo un LET vincolante "in ritardo nella fase"), per racchiudere il relativo nNumero di espressioni.

Inoltre ho cambiato la mia (Dvorak) layout di tastiera (via xmodmap) per passare le parentesi ( "[]") e parentesi, in collaborazione con paredit-mode (che tiene effettivamente tempo per abituarcisi).

Io uso paredit e la coppia-mode pacchetti, ma, per una digitazione parentesi veloce io uso elettrico-dot-e-dash per sostituire un doppio periodo in un () su un ritardo di 5 ms (se di tipo I lentamente ottengo due punti poi ). Si tratta di un pacchetto meraviglioso (ho inciso un po 'per la mia preferenza personale, mentre sto scrivendo con la tastiera Dvorak, ho sostituito la chiave cruscotto da una barra (// non è così comune in Lisp)).

Per evitare il caos in parentesi, aggiungo un pacchetto chiamato 'highlight-parentesi al mio set di strumenti, e per la massima efficienza su grabbings sexp o navigazione del testo in generale, io uso anche vimpulse (come io sono un drogato di Vim).

DrScheme ha le battute per parentesi e parentesi quadre capovolto per default. Essa ha anche una caratteristica in cui si indovina magicamente che uno dei due si intende, in modo che raramente raggiungere per shift-9.

Quack ha una funzione simile a quella del DrScheme.

DivaScheme (il mio editore), è qualcosa di completamente diverso. E le modifiche a livello di sexp, in modo che le parentesi non sono più in mezzo.

Rebind caps lock in "(" e hanno l'inserimento automatico editor di ")" per voi.

(Questo aiuta anche per le altre lingue con un sacco di parentesi, per esempio HTML ...)

Io uso Vim con vim-sexp e vim-sexp-mapping-per-regolari-persone poi hanno mappato <leader>u di mettermi in modalità normale all'interno di un nuovo (.

map <leader>u i(

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top