Как работать с режимом командной строки по пути vi?

10

Есть ли способ взаимодействия с режимом командной строки, всегда оставаясь в исходном положении?

В частности, следующие два действия являются обременительными, требующими перемещения пальцев к клавишам со стрелками, а иногда и хуже, к мыши.

  1. Перемещение: есть ли способ двигаться вперед и назад в режиме командной строки, оставаясь в обычном положении?
  2. Как вы можете копировать и вставлять в командной строке? Я имею в виду копирование как из части самой командной строки в другую часть, так и из текста или даже из буфера обмена.
Shahbaz
источник
1
Оба могут быть решены с помощью окна командной строки с :q; это открывает новое «буферное» окно, в котором вы можете использовать hjklдвижение, y
рывок
1
@Carpetsmoker (ты имеешь в виду q:, верно?) Полезно знать! Я случайно попал туда в прошлом, но не особо задумывался об этом. Похоже, он не работает с /(поиск).
Шахбаз
Ой, да, я имел в виду q: ... Я никогда не использовал это много, поэтому я не могу дать вам полный / правильный ответ ...
Martin Tournoij

Ответы:

17

Там есть командная строка (что вы знаете), и есть окно командной строки (командная строка в специальном буфере, который вы можете редактировать, как и любой другой). Вы вводите либо с помощью <C-f>из командной строки (также для /поиска и т.д.) , когда вы чувствуете потребность в более «редактировать власть», или непосредственно из нормального режима по выделенной q:, q/и т.д. команде.

Подробнее об этом читайте на :help command-line-window.

Инго Каркат
источник
4
<C-f>очень полезно знать, так как он работает после того, как вы уже прошли половину команды.
Шахбаз
1
Согласен; :приходит почти автоматически для меня, так что это хорошо , чтобы иметь возможность переключаться без возврата к обычному режиму.
Инго Каркат
11

Помимо предоставления окна командной строки , Vim также предлагает некоторые ограниченные возможности, позволяющие вам взаимодействовать с командной строкой в ​​режиме командной строки ( без использования клавиш со стрелками).

движение

  • <ctrl-b> переместить курсор в начало командной строки
  • <ctrl-e> переместить курсор в конец командной строки

Редактирование

  • <ctrl-h> удалить символ перед курсором (например, Backspace)
  • <ctrl-w> удалить слово перед курсором
  • <ctrl-u> удалить весь путь от курсора до начала командной строки

Конечно, вы можете добавить сопоставления командной строки, :cnoremapчтобы эмулировать навигационные клавиши некоторых других программ . Или установите плагин Tim Pope RSI, чтобы де-факто использовать стандартные привязки Readline.

Приклеивание

Вы можете вставить содержимое любого регистра в командную строку в позиции курсора, нажав, <ctrl-r>а затем символ, указывающий регистр. например <ctrl-r>, +вставит содержимое буфера обмена в командную строку; <ctrl-r>, "вставит содержимое «безымянного» регистра (т.е. содержимое вашего последнего удаления или удаления).

Смотрите :help cmdline.txtдля более подробной информации обо всем выше.

Богатые
источник
1
Потрясающие! <ctrl-r>было бы особенно полезно.
Шахбаз
Да, я даже использовал ^Rдля макросов. Он позволил мне выполнить сверхсложные манипуляции с текстом, дергая часть файла во время макроса, а позже, также во время макроса, используя дерганную часть в длинной команде Ex-mode с ^R. :)
Wildcard