Вставити єдиний символ у Vim?


25

У Vim (7.2) існує команда звичайного режиму rдля заміни одного символу іншим. Наприклад, введення тексту rXзамінить один символ під курсором Xі поверне вас у звичайний режим.

Чи є команда в звичайному режимі, щоб вставити один символ і повернутися в звичайний режим?



Дивіться vim.wikia.com/wiki/Insert_a_single_character для комплексного рішення.
Максим Суслов

Відповіді:


6

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

:nmap <silent> ,s "=nr2char(getchar())<cr>P

У якому використовується деяка хитрість Vim, що включає "введення" тексту з регістра, в даному випадку реєстру "вираз". Вираз, що підключається до регістра, є " nr2char(getchar())", що поверне один рядок символів.

Причина, по якій я побудував відображення таким чином, полягає в тому, що отримання вводу користувача "на середині" через карту складне і може вести себе непередбачувано; навіть це відображення опустить курсор в область статусу, очікуючи, коли користувач введе символ.


8

Дякуємо Джоні за те, що нам дали цю приголомшливу відповідь у коментарях нижче:

":nmap <C-i> i_<Esc>r"

Це відображає Control + i, щоб вставити один символ, і він робить це дуже стисло.

У вашому файлі vimrc це виглядатиме так:

nnoremap <C-i> i_<Esc>r

Я змінив своє відображення, щоб використовувати простір, і ви можете змінити свій на вибраний ключ (и):

nnoremap <Space> i_<Esc>r

1
Це найбільш стисла і проста відповідь.
Ділантепігуй

4

Наскільки я знаю, такої функції немає в жодному широко поширеному втіленні редактора vi, але vim має можливість створювати власні команди. Це раніше обговорювалося тут: у цій темі

Ви можете створити власну команду, виконуючи те, що хочете зробити.


3
Ось команда зіставити Ctrl-I, щоб вставити один символ: ": nmap <C <i> i_ <esc> r"
Джонні

2

Простий спосіб зробити це за допомогою команд «Вирізати xі поставити» p. Скажіть, що *це символ, який ви хочете вставити. Вставте його за допомогою i * Esc. Тоді вдарити x. Це виріже персонажа. Тепер ви можете натиснути, pщоб поставити один символ. Якщо вам потрібно вставити цей символ в 300 раз, ви можете набрати: 300p.

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