Використовувати зворотний простір для зміни поточної команди в звичайному режимі?


9

Іноді під час введення команди у звичайному режимі ви можете зробити друк, наприклад, якщо я маю намір ввести 10dk, я можу випадково почати вводити текст 19d.

Оскільки команда ще не завершена / скоєна, чи можна видалити неправильні ключі за допомогою зворотної області як такої: 19d<backspace><backspace>0dkзамість того, щоб натиснути клавішу escape та повторити команду?

Побічне запитання: Чи існує термін Vim для структури даних, яка містить поточну команду до її введення?


1
Напевно, це можна задати як особливість у новіших версіях!
SibiCoder


4
AFAIK неможливий, але, оскільки ці послідовності короткі, я не впевнений, який виграш може досягти така функція. Коли вам доведеться повторити всю послідовність, принаймні ви «змушені» повторювати її, поки не помилитесь;) (тобто - повторення побудови символу! Каламбур призначений).
VanLaser

1
@VanLaser Найгірший кошмар Віммера "змушений" повторити щось;) Крім того, я смоктаю під час набору тексту і маю порожню клавіатуру, тому мені не рідкість, щоб зіпсувати команду 256 разів, перш ніж правильно її вчинити.
HellaMad

4
Що може піти не так, коли поганий машиніст використовує порожню клавіатуру?
romainl

Відповіді:


3

Немає способу це зробити, і нормально, що цього немає: команди звичайного режиму, як правило, досить короткі, і їх можна скасувати, Escякщо ви зіпсуєте це.

Можливим рішенням буде використання :normalкоманди. Це робить процес довшим, але, наприклад, якщо ви вводите :normal 10jкомандний рядок, Vim виконає 10jтак, ніби ви ввели його в звичайному режимі. (Див. :h :normal)

Ви також можете додати ці рядки до своїх .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

Вони створюють відображення (тут, F4але використовуйте все, що завгодно), яке викликатиме функцію NormalModeCommand().

Функція дозволяє набрати рядок у командному рядку, а потім виконати рядок, який ви ввели як команду звичайного режиму. Під час введення рядка в командному рядку ви можете виправити його, як і будь-яку іншу команду. Звичайно, це не ідеально, але знову ж таки Vim не призначений для цього.

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