Як редагувати поточну команду оболонки в VI


31

Я бачив в блогах на машинах Linux, ви можете редагувати поточну команду bash shell у VI (або все, що встановлено EDITOR), натискаючи ctrl-x, ctrl-e.

Схоже, це не працює на 10.8. Будь-які ідеї, як відредагувати поточну команду bash в редакторі за замовчуванням?


Це повинно працювати в 10,8 (принаймні, це для мене). Ви намагалися зняти FCEDIT і EDITOR?
nohillside

Документація для C-xC-e тут - що у вашій VISUALзмінній?
glenn jackman

це не про 10,8. Я на 10,8, і це прекрасно працює зі мною. Я нічого не змінив у своєму .bash_profile, щоб увімкнути це.
Вінсент


1
Я щойно зрозумів, що роблю Ctrl + (x, e) (утримуючи ctrl, натискаючи x, натискаючи e, звільняючи контроль) - ось чому це не працювало для мене. Коли я змінився на натискання двох чітких ударів Ctrl-x, відпустіть Ctrl, Ctrl-e - тоді все почало працювати прекрасно!
Димитрій К

Відповіді:


32

Ви хочете set -o vi(додайте його до свого ~/.bashrc). Потім, щоб відредагувати поточний рядок, просто натисніть, Escщоб увійти в командний режим.

Див. Http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Щоб відредагувати поточну команду в повноекранному редакторі, встановіть VISUALзмінну вашого середовища на vim(я припускаю, що ви хочете vim), а потім у командному режимі в поточному коментарі натисніть v.


5
натискання "v" було секретним соусом, якого я бракував. Спасибі.
Скотт Уолтер

2
Чи можливо отримати цю vкоманду в режимі emacs (non-vi)?
Алекс Кан

10
Просто зробіть Ctrl-X, потім Ctrl-E.
albapa

7

Ваш режим edit-and-execute-commandне може бути прив’язаний до viрежиму. Спробуйте:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Щоб зробити його постійним, додайте цей рядок у свій ~/.inputrcфайл.

(через цю відповідь ; зарахуйте @unforgettableid за посилання)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.