Citação ou conclusão de colchetes no bash, sem pressionar TAB

3

Existe alguma maneira de ter símbolos combinados de conclusão automática como '"[{( com seus equivalentes destros? Eu gostaria de fazer isso sem ter que pressionar a tecla.

Por exemplo, digitar a string echo " resultaria imediatamente nessa string echo "|" , onde meu cursor (o pipe) está entre as duas aspas.

Pontos de bônus se você puder encontrar uma maneira que, quando a primeira citação for excluída, a segunda também seja excluída.

Se você já usou algum editor de texto maduro (por exemplo, texto sublime), pode entender como essa interação funciona. Respostas utilizando casca de peixe também são aceitas.

    
por codysehl 09.08.2013 / 15:20

1 resposta

3

Embora você não possa ligar chaves em si mesmo no GNU Readline - algo como "(": "()" direciona para loop infinito - existe uma maneira. Não é para readline em geral, apenas para bash . Adicione isto a você .bashrc :

readline-brackets() {
    READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${1}${READLINE_LINE:$READLINE_POINT}"
    ((READLINE_POINT+=1))
}
bind -m vi-insert -x '"\"" : "readline-brackets \"\""'
bind -m vi-insert -x $'"7" : "readline-brackets \7\7"' # SINGLE QUOTE
bind -m vi-insert -x '"<" : "readline-brackets \<\>"'
bind -m vi-insert -x '"(" : "readline-brackets \(\)"'
bind -m vi-insert -x '"[" : "readline-brackets []"'
bind -m vi-insert -x '"{" : "readline-brackets {}"'

Remova -m vi-insert se você usar o modo emacs , não vi .

    
por 12.12.2013 / 20:16