Vi для командной строки R, как в Bash

Контекст

Мне нравится редактировать и управлять командной строкой bash, используя привязки клавиш vi-стиля со следующей настройкой:

set -o vi

Однако, когда я запускаю R в командной строке, эти keybindings исчезают. Я знаю, что плагин Vim-R позволяет использовать комбинации клавиш Vim, когда вы запускаете R через Conque Shell, но я не совсем доволен этим опытом и, иногда я просто хочу запустить R в стандартной командной строке.

Вопрос

  • Есть ли способ получить привязки ключей стиля Vi в R в командной строке?

Ответы

Ответ 1

Спасибо Джошуа Ульриху и ответы на вопросы, которые помогли мне начать.

Ниже я записываю свой опыт:

Начальная настройка

Я пробовал set keymap vi и set editing-mode vi. Когда я начал R в своем терминале Gnome, некоторые ярлыки работали, а другие - нет. В частности, cc и dd (т.е. Удалять строки) вообще не работали, а cw и dw выполняли действие по удалению слов, но не обновляли дисплей, пока я не нажал дополнительный ключ, который не является функциональным опытом.

Замена недостающей функциональности

Я добавил следующее к ~/.inputrc, которое фиксировало очевидные проблемы, упомянутые выше:

set completion-ignore-case on

set editing-mode vi

$if mode=vi
    set keymap vi-insert
    "\C-l": clear-screen
    "\C-p": history-search-backward
    "\C-n": history-search-forward
    # alt dot cycles through last argument
    "\e.":yank-last-arg

    set keymap vi-command
    "D":kill-line
    "dw": kill-word
    "dd": kill-whole-line
    "db": backward-kill-word
    "cc": "ddi"
    "cw": "dwi"
    "cb": "dbi"
    "diw": "lbdw"
    "yiw": "lbyw"
    "ciw": "lbcw"
    "diW": "lBdW"
    "yiW": "lByW"
    "ciW": "lBcW"
    "gg": beginning-of-history
    "G": end-of-history
$endif

Ответ 2

Добавьте это в свой .inputrc:

set editing-mode vi

Ответ 3

Командная строка R, похоже, использует Readline. Readline использует .inputrc для настроек:

set keymap vi

на ваш ~/.inputrc.