Як працювати з режимом командного рядка vi vi?


10

Чи існує спосіб взаємодії з режимом командного рядка, залишаючись завжди в домашньому положенні?

Зокрема, наступні дві дії є громіздкими, вимагаючи переміщення пальців до клавіш зі стрілками, а іноді й гірше, миші.

  1. Переміщення: чи є спосіб переміщення вперед і назад в режимі командного рядка, залишаючись у звичайному положенні?
  2. Як можна скопіювати та вставити в командний рядок? Я маю на увазі копіювання як з частини самого командного рядка в іншу частину, так і з тексту чи навіть буфера обміну.

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> видалити символ перед курсором (як, наприклад, зворотний простір)
  • <ctrl-w> видаліть слово перед курсором
  • <ctrl-u> видалити весь шлях від курсору до початку командного рядка

Звичайно, можна додати відображення командного рядка, :cnoremapщоб імітувати навігаційні клавіші деяких інших програм . Або встановіть плагін RSI Тіма Попа, щоб використовувати стандартні прив'язки Readline.

Обклеювання

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

Див :help cmdline.txtБільш детальну інформацію про всіх вище.


1
Дивовижно! <ctrl-r>було б особливо корисно.
Шахбаз

Так, я навіть використовував ^Rмакроси. Це дозволило мені здійснити надзвичайно хитрі маніпуляції з текстом, потягуючи частину файлу під час макросу, а пізніше, також під час макросу, використовуючи потягнуту частину в довгій команді Ex-mode з ^R. :)
Wildcard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.