Tento vincular Shift-Enter
para inserir uma nova linha sem avaliar a expressão atual no terminal e nos modos repl. Lendo através doArchWiki, tentei definir isso em meu ~/.Xmodmap
arquivo e recarregar ~/.Xmodmap
com xmodmap ~/.Xmodmap
. Isso, entretanto, 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 adicionais relevantes:
(1) Ativei o modo de edição vi em my ~/.bashrc
e my ~/.inputrc
. No entanto, os resultados não diferiram ao retirar essas opções.
(2) O uso keysym Return = Return Linefeed
foi sugeridoaqui.* 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 lá, pois a linguagem de programação está usando sua própria implementação de repl. Portanto, isso não tem qualquer influência no caso em questão.
Responder1
A resposta fácil é digitar Ctrl+ V Ctrl+ J.
Vincular Shift+ Returna Linefeed
faz com que envie ^J
= control-J = \n
= \012
(em vez de ^M
= \r
= \015
). Isso é apenas parte do que você precisa fazer: por padrão, ambas as chaves estão vinculadas à execução da linha atual no bash. Você precisa alterar a ligação de ^J para .inputrc
inserir uma nova linha literal ( ^V
= \026
):
"\n": self-insert
Como alternativa, vincule a chave em seu .bashrc
:
bind -m vi-command '"\n": self-insert'
bind -m vi-insert '"\n": self-insert'
Alterar Shift+ Returnpara Linefeed
pode ter efeitos colaterais indesejáveis - geralmente é útil ter Shift+ Returnequivalente a Returnpara que você possa digitar Returnrapidamente, mesmo quando Shiftestiver inativo. Eu recomendaria alterar Ctrl+ Returnpara inserir um avanço de linha no XTerm. Você pode fazer isso em seu ~/.Xresources
(ou onde quer que você coloque seus recursos X):
XTerm.vt100.translations: #override Ctrl<Key>Return: string("\012")