r navigation console readline libreadline

Historial de comandos R: ¿cómo configurar la flecha arriba para tratar la “entrada multilínea y encerrada” como una sola línea?



navigation console (2)

Esta pregunta es acerca de cómo configurar la consola R para que se comporte como un shell bash cuando se trata de navegar por el historial de comandos. Está algo relacionado con la ?history En el caso de las líneas múltiples encerradas, me gustaría configurar la navegación del historial de comandos de R para que sea similar a bash.

Actualmente, al ejecutar R en un xterm en Linux, el uso de la flecha hacia arriba para navegar por el historial de comandos hace que cada línea anterior se recupere una por una, incluso si un conjunto de líneas se hubiera incluido entre llaves. Esto ocurre, por ejemplo, al copiar / pegar una función multilínea de un editor de texto en la consola R. No es así con bash. Aquí hay un ejemplo de cómo funciona bash a este respecto:

En un shell bash dentro de un xterm bajo Linux, después de escribir las siguientes cinco líneas ...

a=1 { x=1 y=1 }

... la primera pulsación de la flecha hacia arriba recordará una reformulación de línea única de los comandos encerrados, como este ...

{ x=1; y=1; }

... y la segunda prensa recordará esto ...

a=1

Parece que en R, la flecha hacia arriba navega hacia atrás una línea a la vez, independientemente de la encapsulación. ¿Hay alguna forma de configurar R para que el historial de comandos funcione como bash?


Usted podría utilizar rlwrap . Lo uso para otros programas de consola y funciona muy bien. Necesitará anteponer el comando R con el binario rlwrap y luego las líneas de su historial se pueden restaurar de varias formas, incluida la coincidencia multilínea.


Solución para Linux / Unix

Del mismo modo que en Rstudio (gracias al comentario de Ari B. Friedman ), cuando el usuario de la consola R usa Shift Enter para omitir RETURN, puede iniciar la nueva línea (en el terminal R) sin aceptar el comando de nueva línea utilizando Ctrl-V Ctrl-J . De esta manera, el comando multilínea se aceptará en el historial como una sola línea con saltos de línea en lugar de entradas e incluso tendrá la oportunidad de editarlo. Incluso puede administrar en su archivo .inputrc para tener una combinación personalizada para esta acción.

No creo que la reconfiguración directa de R sea posible.

La página de manual de Readline puede ayudar más.