История команд R: как настроить стрелку вверх для обработки "многострочного, вложенного в скобки ввода" в качестве одной строки?
Этот вопрос касается настройки консоли R, чтобы вести себя как оболочка bash, когда дело доходит до навигации по истории команд. Это несколько связано с ?history
. Для многострочных линий с привязкой к скобкам я хотел бы настроить навигацию по истории команд в R, чтобы она была похожа на bash.
В настоящее время при запуске R в xterm под Linux, используя стрелку вверх для навигации по истории команд, каждая предыдущая строка будет отозвана одна за другой, даже если набор строк был заключен в фигурные скобки. Это происходит, например, при копировании/вставке многострочной функции из текстового редактора в консоль R. Не так с bash.
Вот пример того, как bash функционирует в этом отношении:
В оболочке bash в xterm под Linux после ввода следующих пяти строк...
a=1
{
x=1
y=1
}
... первое нажатие стрелки вверх вызовет однострочную переформулировку команд, заключенных в скобки, как это...
{ x=1; y=1; }
... и второе нажатие напомнит об этом...
a=1
Кажется, что в R стрелка вверх перемещается назад по одной линии за раз, независимо от инкапсуляции. Есть ли способ настроить R так, чтобы он управлял навигацией по истории, как bash?
Ответы
Ответ 1
Обходной путь для Linux/Unix
Аналогично, как в Rstudio (спасибо комментарию Ari B. Friedman), когда пользователь в консоли R использует Shift Enter для обхода RETURN, вы можете запустить новую строку (в R-терминале), не принимая команду новой строки, используя Ctrl-V Ctrl-J. Таким образом, команда multi-line будет принята в историю как однострочный с линейными каналами вместо входящих, и у вас даже будет возможность редактировать его. Вы даже можете управлять в своем .inputrc
файле, чтобы иметь пользовательскую комбинацию для этого действия.
Я не думаю, что возможна прямая реконфигурация R.
Страница справки Readline может помочь больше.
Ответ 2
Вы можете использовать rlwrap. Я использую его для других консольных программ, и он работает очень хорошо. Вам нужно будет добавить команду R с двоичным кодом rlwrap, а затем ваши строки истории можно восстановить несколькими способами, включая многострочное сопоставление.