Enlace Shift-Enter para insertar una nueva línea sin evaluar la expresión actual

Enlace Shift-Enter para insertar una nueva línea sin evaluar la expresión actual

Intento vincularme Shift-Enterpara insertar una nueva línea sin evaluar la expresión actual en la terminal y en los modos de respuesta. Leyendo a través delArchiwiki, Intenté configurar esto en mi ~/.Xmodmaparchivo y recargarlo ~/.Xmodmapcon xmodmap ~/.Xmodmap. Sin embargo, esto no funciona. Aquí está mi configuración detallada:

contenido de:

    ~/.Xmodmap:
    keysym Return = Return Linefeed

~/.Xmodmapobtiene recursos automáticamente al iniciar sesión configurando:

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

    fi

en mi ~/.xinitrc.

Información adicional relevante:

(1) Activé el modo de edición vi en my ~/.bashrcy my ~/.inputrc. Sin embargo, los resultados no difirieron al eliminar estas opciones.

(2) keysym Return = Return LinefeedSe sugirió el usoaquí.* Otros métodos tampoco funcionaron.

(3) Mi $TERMestá configurado en xterm-256color.

¡Gracias por cualquier ayuda!


*Actualización: La solución sugerida en esta página (si aún no se encuentra) no puede funcionar en el caso específico que se analiza allí, ya que el lenguaje de programación utiliza su propia implementación de respuesta. Por tanto, esto no tiene ninguna relación con el caso que nos ocupa.

Respuesta1

La respuesta fácil es escribir Ctrl+ V Ctrl+ J.


Vincular Shift+ Returna Linefeedhace que envíe ^J= control-J = \n= \012(en lugar de ^M= \r= \015). Eso es sólo una parte de lo que debe hacer: de forma predeterminada, ambas claves están obligadas a ejecutar la línea actual en bash. Debe cambiar el enlace de ^J en su .inputrcpara insertar una nueva línea literal ( ^V= \026):

"\n": self-insert

Alternativamente, vincule la clave en su .bashrc:

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

Cambiar Shift+ Returna Linefeedpuede tener efectos secundarios indeseables; a menudo es útil tener Shift+ Returnequivalente a Returnpara poder escribir Returnrápidamente incluso cuando Shiftestá inactivo. En su lugar, recomendaría cambiar Ctrl+ Returnpara insertar un salto de línea en XTerm. Puedes hacerlo en tu ~/.Xresources(o dondequiera que coloques tus recursos X):

XTerm.vt100.translations: #override Ctrl<Key>Return: string("\012")

información relacionada