Pergunta

Eu tento manter meus dedos no corredor da casa, tanto quanto possível.

digitar todos os parênteses me faz mover longe de lá um pouco justo.

Eu uso Emacs; os próprios parênteses são nenhum problema, estou confortável com eles. E eu não gosto de modos que eles tipo para mim automaticamente.

Eu pensei sobre remapeamento os colchetes de parênteses e vice-versa. isso é uma boa ideia? O que todo mundo faz?

Foi útil?

Solução

Eu pessoalmente recomendo a combinação letal de Emacs , SLIME & paredit.el Paredit permite pseudo-semanticamente editar o código LISP a nível sexp, e que faz com que os parênteses desaparecer quase completamente. Você pode mover sexps como se fossem palavras simples e até mesmo transformar-los com apenas um par de chave-cursos. Há também um modo menor chamado Redshank que trabalha em conjunto com paredit e que fornece mais energia.

Considere simples estes exemplos (| é a posição do 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)

Eu tenho feito algumas graves de programação Lisp Comum no meu tempo, e paredit provou ser inestimável para mim. Eu não posso nem pensar em escrever código LISP não-trivial sem a minha caixa de ferramentas. E depois de tudo isso é a forma como deve ser; você nunca deve ter para contar ou combinar seus parênteses ... uma vez que você dominar paredit, os parênteses só vai desaparecer a partir na frente de seus olhos.

remapeamento o [] para () vai ajudar, mas você vai parar muito carinho depois de começar a usar paredit.

Sinta-se livre para usar os partes específicas LISP dos meus dot-emacs .

Outras dicas

Com muitos layouts de teclado não-americanos, digitando colchetes ou chaves é ainda mais pesado do que parênteses de digitação, de qualquer maneira, o que torna a programação na maioria das linguagens muito strainful, então considere-se afortunado. ;)

Quanto a mim, eu uso um layout de teclado non-standard-programador amigável que me permite escrever parêntesis via [Super] -j e [Super] k.

Eu tomo meus dedos fora do chaves de casa ....

Eu tenho pedais. Leftfoot = parêntese aberto, RightFoot = paren próximos.

Bem, eu não, mas eu não usar Lisp. Ele não parece ser uma má idéia, no entanto.

Você poderia imaginar uma variação sobre Lisp que o recuo usado em vez de parênteses? (Tendo uma página da especificação Python)

Eu tentei remapeamento na Emacs, mas cria novos problemas: digamos que você está editando em uma janela de terminal através de ssh e você colar um trecho para a janela; então parênteses e colchetes são trocadas em seu colar, e não apenas a sua digitação. Se você tentar isso, remapear a um nível inferior em seu sistema, como xmodmap.

(Claro, o outro problema óbvio está usando outros computadores sem o seu remapeamento. Isso foi um incômodo também, embora suportável.)

Eu remapeado [] para () com xmodmap e como ele. Foi um pouco estranho se acostumar a escrever código em linguagens que uso [], mas como qualquer mudança, você se acostumar com isso. Tendo parens não prefixadas em Lisp é mais agradável do que não ter suportes não prefixadas em outros idiomas, por isso funciona.

De qualquer forma, aqui está o encantamento xmodmap necessária para o meu teclado US:

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

"... tantos parenethesis"

A primeira coisa que fiz foi ligam a '(' chave para a seqüência '(' + ')' + direita (), então meu parêntese auto equilíbrio, deixando metade como muitos esquerda para digitar no novo código.

Você também quer uma forma conveniente para navegar para fora um parêntese - ligam C-] para a busca de sequência ( ')') + direita (). Authoring fica mais curto agora, como você não precisa de tomar as mãos fora da posição inicial -. Basta digitar C-] cada vez que você completar uma S-expr

A próxima coisa que fiz foi ligam a chave para uma sub-rotina que empurra um item existente na lista atual ... por isso, se // é a posição do cursor, em seguida, este comando irá transformar:

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

para

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

efetivamente empurrando um item da direita para a lista atual - muito útil para editar o código existente. A seqüência '(', '<', CS], Espaço, '2' acrescenta "comparar a menos de 2" para uma expressão existente. Combinada com C-], isso permite que você crie novas expressões muito rapidamente a partir dos já existentes.

@jamesnvc, Eu não penso sobre a ligação () para chaves [] ... Eu vou ter que tentar isso, thx!

Eu tenho que levar meus dedos para fora da linha de casa para chegar a todos os outros operadores de mudança de número, então eu nunca pensei muito sobre isso.

E uma vez que você digite uma esquerda-parens, elétrico-parens lhe dá o direito.

Se você usar os parênteses mais do que os colchetes, por todos os meios, remapeamento de distância. Eu não vejo como isso poderia representar mais problemas do que, digamos, um canhoto trocando seus botões do mouse.

Quando estou escrevendo código, eu geralmente gastam muito mais tempo pensando e lendo meu código, que eu escrever. Eu tentei um par de vezes no passado para mudar para o layout de teclado Dvorak, mas me falta motivação óbvia porque eu posso digitar muito mais rápido do que eu posso pensar. Programação sintaxe da linguagem é um problema semelhante - (. Ou seja, usando o mouse seria ruim). Contanto que eu pode digitar o código sem sair do teclado, eu estou feliz

Na maior parte, eu só digitá-los, mas, ocasionalmente, eu uso M- (e M-) (especialmente quando eu estou adicionando uma ligação "no final do estágio" LET), para incluir o nNúmero relevante de expressões.

Eu também mudou a minha (Dvorak) layout de teclado (via xmodmap) para mudar os colchetes ( "[]") e parênteses, em conjunto com paredit-mode (que, de fato, levar algum tempo para se acostumar).

Eu uso pacotes paredit e de modo par, mas, para digitação parêntese rápido eu uso elétrico-ponto-e-traço para substituir um período de casal em um () em um atraso de 5 ms (se eu digitar lentamente eu recebo dois pontos, em seguida, ). É um pacote maravilhoso (I cortado um pouco para a minha preferência pessoal, como eu digitar com o teclado Dvorak, eu ter a chave traço por uma barra (// não é tão comum em lisp)).

Para evitar a confusão em parênteses, eu adicionar um pacote chamado 'highlight-parênteses ao meu conjunto de ferramentas, e para a máxima eficiência em grabbings sexp ou navegação de texto em geral, eu também uso vimpulse (como eu sou um viciado Vim).

DrScheme tem as teclas para parênteses e colchetes capotou por padrão. Ele também tem um recurso onde magicamente suposições que um dos dois que você quis dizer, então você raramente chegam para shift-9.

Quack tem um recurso similar ao de DrScheme.

DivaScheme (meu editor), é algo completamente diferente. Ele edita no nível sexp, de modo que os parênteses não estão mais no caminho.

Rebind capslock para "(" e têm a autoinsert editor ")" para você.

(Isso também ajuda para outras línguas com um monte de suportes, por exemplo HTML ...)

Eu uso o Vim com vim-sexp e VIM-sexp-mapeamentos-para-regulares-pessoas então mapearam <leader>u me colocar no interior modo normal de uma nova (.

map <leader>u i(

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top