Связки клавиш Vi для командной строки R, как в Bash - PullRequest
15 голосов
/ 04 июня 2011

Context

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

set -o vi

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

Вопрос

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

Ответы [ 3 ]

13 голосов
/ 05 июня 2011

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

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

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

Я пробовал 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
11 голосов
/ 04 июня 2011

Добавьте это к вашему .inputrc:

set editing-mode vi
5 голосов
/ 04 июня 2011

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

set keymap vi

к вашему ~/.inputrc.

...