Binding Shift-Enter para inserir uma nova linha sem avaliar a expressão atual

4

Eu tento ligar Shift-Enter para inserir uma nova linha sem avaliar a expressão atual no terminal e nos modos de replicação. Lendo o ArchWiki , tentei configurar isso no meu arquivo ~/.Xmodmap e recarregar ~/.Xmodmap com xmodmap ~/.Xmodmap . Isso, no entanto, não funciona. Aqui está minha configuração detalhada:

conteúdo de:

    ~/.Xmodmap:
    keysym Return = Return Linefeed

~/.Xmodmap recebe recursos automaticamente ao fazer login definindo:

    if [ -s ~/.Xmodmap ]; then
        xmodmap ~/.Xmodmap

    fi

no meu ~/.xinitrc .

Informações relevantes adicionais:

(1) Eu configuro o modo de edição vi no meu ~/.bashrc e meu ~/.inputrc . No entanto, os resultados não diferiram ao tirar essas opções.

(2) Usando keysym Return = Return Linefeed foi sugerido aqui . * Outros métodos também não funcionaram.

(3) Meu $TERM está definido como xterm-256color .

Obrigado por qualquer ajuda!

* Atualização: A solução sugerida nesta página (se ainda for encontrada) não pode funcionar no caso específico discutido ali, pois a linguagem de programação está usando sua própria implementação de replicação. Então, isso não tem qualquer influência sobre o caso em questão.

    
por lord.garbage 07.05.2014 / 09:01

1 resposta

2

A resposta fácil é digitar Ctrl + V Ctrl + J .

Ligação Shift + Retornar para Linefeed faz com que ele envie ^J = control-J = \n = 2 (em vez de ^M = \r = 5 ). Isso é apenas parte do que você precisa fazer: por padrão, ambas as chaves são obrigadas a executar a linha atual no bash. Você precisa alterar a ligação de ^ J no seu .inputrc para inserir uma nova linha de entrada literal ( ^V = 6 ):

"\n": self-insert

Como alternativa, ligue a chave no seu .bashrc :

bind -m vi-command '"\n": self-insert'
bind -m vi-insert '"\n": self-insert'

Mudar Shift + Retornar para Linefeed pode ter efeitos colaterais indesejados - geralmente é útil ter Shift + Retornar equivalente a Retorna para que você possa digitar Retornar rapidamente mesmo quando a Shift está desativada. Eu recomendaria mudar Ctrl + Retornar para inserir um avanço de linha no XTerm. Você pode fazer isso no seu ~/.Xresources (ou onde quer que você coloque seus recursos do X):

XTerm.vt100.translations: #override Ctrl<Key>Return: string("2")
    
por 08.05.2014 / 03:46