Pregunta

Trato de mantener mis dedos en el corredor de la casa tanto como sea posible.

Al escribir todos los paréntesis, me hace mover de allí un poco justo.

utilizo Emacs; los propios paréntesis son ningún problema, estoy cómodo con ellos. Y no me gusta que los modos de tipo para mí de forma automática.

He pensado en la reasignación de los corchetes a los paréntesis y viceversa. ¿Es esta una buena idea? ¿Qué hace que todos los demás?

¿Fue útil?

Solución

Yo personalmente recomiendo el combo letal de Emacs , BABA y paredit.el Paredit le permite editar pseudo-semánticamente el código LISP a nivel sexp, y eso hace que los paréntesis, desaparecen casi por completo. Puede moverse sexps como si fueran simples palabras e incluso mutar con sólo un par de clave-movimientos. También hay un modo menor llamado Redshank que trabaja en conjunto con Paredit y que proporciona más potencia.

Considere estos ejemplos simples (| es la posición del cursor):

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

He hecho un poco de programación seria Common Lisp en mi tiempo, y paredit ha demostrado ser muy valiosa para mí. No puedo ni pensar en la escritura de código LISP no trivial sin mi caja de herramientas. Y después de todo eso es la manera que debe ser; que nunca debería tener que contar o que coincida con sus paréntesis ... una vez que dominar Paredit, los paréntesis se acaba de desaparecer de delante de sus ojos.

Reasignación de la [] para () va a ayudar, pero que dejará de cuidar mucho después de empezar a usar Paredit.

No dude en utilizar el porciones específicas LISP desde mi punto-emacs .

Otros consejos

Con muchos diseños de teclado no estadounidenses, escribiendo entre corchetes o llaves que es aún más engorroso que el paréntesis de mecanografía, de todos modos, lo que hace que la programación en la mayoría de lenguajes muy strainful, por lo que considera afortunado. ;)

En cuanto a mí, yo uso un diseño de teclado no estándar programador de usar que me permite escribo paréntesis, a través de [Super] -j y [Super] -k.

Tomo mis dedos de las llaves de la casa ....

Tengo pedales. Leftfoot = paren abiertos, RightFoot = cerrar paren.

Bueno, no lo sé, pero yo no uso Lisp. No parece una mala idea, sin embargo.

¿Se imagina una variante de Lisp que utiliza la sangría en lugar de parens? (Tomando una página de la especificación de Python)

He intentado reasignación en Emacs, pero crea nuevos problemas: dice que está editando en una ventana de terminal a través de ssh y pegar un fragmento de código en la ventana; a continuación, parens y soportes swapeada en su pegar, no sólo lo que ha escrito. Si intenta esto, volver a asignar a un nivel más bajo en su sistema, como xmodmap.

(Por supuesto, la obvia otro problema está utilizando otros equipos sin su reasignación. Esa era una molestia también, aunque soportable.)

I reasigna [] para () con xmodmap y me gusta. Fue un poco raro acostumbrarse a la escritura de código en lenguajes que utilizan [], pero al igual que cualquier cambio, uno se acostumbra a ella. Tener parens sin desplazar en Lisp es mejor que no tener soportes sin desplazar en otros idiomas, así que funciona.

De todos modos, aquí está el encantamiento xmodmap necesario para mi teclado de Estados Unidos:

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

"... tantos parenethesis"

Lo primero que hice fue unen al '(' clave para la secuencia '(' + ')' + derecha (), por lo que mi auto balance entre paréntesis, dejando la mitad que dejó de escribir cuando se escribe código nuevo.

También desea una forma cómoda de navegar a cabo una paren - C- unirse] a la secuencia de búsqueda ( ')') + derecha (). Autoría se hace más corto ahora, ya que no es necesario tomar las manos de la posición inicial -. Sólo tiene que escribir C-] cada vez que se completa un S-expr

Lo siguiente que hizo fue vincular una clave a una subrutina que empuja un elemento existente en la lista actual ... así que si // es la posición del cursor, entonces este comando se transforman:

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

a

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

empujando efectivamente un elemento de la derecha en la lista actual - muy útil para la edición de código existente. La secuencia '(', '<', CS], espacio, '2' añade "comparar menos de 2" a una expresión existente. En combinación con C-], esto le permite crear nuevas expresiones muy rápidamente de los ya existentes.

@jamesnvc, No pensé acerca del enlace () a las teclas [] ... Voy a tener que probar que, THX!

Tengo que tomar mis dedos fuera de la casa fila para llegar a todos los demás operadores del número de turno, por lo que nunca pensé mucho sobre ello.

Y una vez que se escribe a la izquierda-parens, eléctricos-parens le dan la derecha.

Si utiliza los paréntesis más que los corchetes, por todos los medios, reasignar distancia. No veo cómo se podría plantear más problemas que, por ejemplo, un zurdo intercambiando sus botones del ratón.

Cuando estoy escribiendo código, por lo general paso mucho más tiempo pensando y leyendo mi código, que yo escribiéndolo. He intentado un par de veces en el pasado para cambiar a la disposición del teclado Dvorak, pero le falta motivación evidente, porque puedo escribir mucho más rápido de lo que puedo pensar. la sintaxis del lenguaje de programación es un problema similar -., siempre que puedo escribir código sin salir del teclado (. es decir, utilizando el ratón sería malo), estoy feliz

Sobre todo, sólo tiene que escribir, pero de vez en cuando, yo uso M- (y M-) (especialmente cuando estoy añadiendo una unión "al final de la etapa de" LET), para encerrar el nNúmero correspondiente de expresiones.

También cambiado (Dvorak) distribución del teclado (a través de xmodmap) para cambiar entre corchetes ( "[]") y parens, conjuntamente con paredit-mode (que tiene efectivamente algún tiempo para acostumbrarse).

Yo uso paquetes paredit y un par de modo que, para la tipificación paréntesis rápida utilizo-eléctrico de puntos y rayas para reemplazar un periodo doble en un () en un retardo de 5 ms (si escribo lentamente consigo dos puntos luego ). Es un maravilloso paquete (Pirateé un poco para mi preferencia personal, mientras se escribe con el teclado Dvorak, que sustituye la tecla guión por una barra (// no es tan común en Lisp)).

Para evitar el desorden en parens, agrego un paquete llamado 'punto culminante-paréntesis, a mi conjunto de herramientas, y para una máxima eficiencia en grabbings SEXP o la navegación de texto en general, también uso vimpulse (como yo soy un adicto a Vim).

DrScheme tiene las pulsaciones de teclado para parens y corchetes volteado por defecto. También tiene una característica que adivina mágicamente la que uno de los dos que quería decir, por lo que rara vez se alcanza por turno-9.

Quack tiene una característica similar a la de DrScheme.

DivaScheme (mi editor), es algo completamente diferente. Se edita a nivel sexp, de manera que los parens ya no están en el camino.

Volver a vincular a bloqueo de mayúsculas "(" y tienen la inserción automática editor ")" para usted.

(Esto también ayuda para otros idiomas con una gran cantidad de soportes, por ejemplo, HTML ...)

utilizo Vim con vim-sexp y VIM-SEXP-mappings-para-regular-personas entonces han mapeado <leader>u que me meta en el modo normal en el interior de un nuevo (.

map <leader>u i(

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top