Vim – Есть ли способ получить немедленную визуальную обратную связь во время вставки в режиме визуального блока?

Я часто нажимаю:

  • <Ctrl> V чтобы перейти в режим визуального блока и выделить столбец
  • нажмите <shift>-i (чтобы вставить в начале строки), введите несколько вещей (на данный момент я вижу свои изменения в первой строке, но не другие).
  • а затем нажмите <Esc> чтобы вернуться в обычный режим.

После того, как я нажал <Esc> , я вижу, что материал, который я вставил, вставлен в каждую из других строк.

Я хотел бы визуально видеть мои изменения в каждой строке, как я печатаю, а не только в первой строке. Это возможно?

Перейдите в Visual Block, выберите кучу строк введите описание изображения здесь

Хит <Shift> i введите описание изображения здесь

Добавить текст – это часть, которую я хотел бы изменить. Я хотел бы, чтобы пробелы были сразу видны на всех строках, а не только на первой строке. введите описание изображения здесь

Hit Escape – теперь пробелы добавляются в каждую строку. Я бы хотел, чтобы это случилось раньше. введите описание изображения здесь

Я знаю, что мог бы сделать то, что я сделал в этом примере, с помощью >> . Я выбрал упрощенный пример, чтобы проиллюстрировать то, что я хотел бы изменить.

Благодаря!

  • Как включить мышь в Vim?
  • Можем ли мы исправить уже исправленный шрифт?
  • Как добавить строку во многие файлы
  • Сохранять прозрачность в конце файла vim
  • Vim: сводка кода на питоне не отличается от кода C / C ++
  • Почему мой компилятор vim-7.3 не включает сервер клиентов?
  • Разница в поведении tcsh / vi-mode между Solaris и Linux
  • Как заставить vim работать с tmux правильно?
  • One Solution collect form web for “Vim – Есть ли способ получить немедленную визуальную обратную связь во время вставки в режиме визуального блока?”

    Попробуйте добавить это в свой vimrc :

     nmap <buffer> <silent> <expr> <F12> InsertCol() imap <buffer> <silent> <expr> <F12> InsertCol() function! InsertCol() let w:first_call = exists('w:first_call') ? 0 : 1 "if w:first_call " startinsert "endif try let char = getchar() catch /^Vim:Interrupt$/ let char = "\<Esc>" endtry if char == '^\d\+$' || type(char) == 0 let char = nr2char(char) endif " It is the ascii code. if char == "\<Esc>" unlet w:first_call return char endif redraw if w:first_call return char."\<Esc>gvA\<CR>=Redraw()\<CR>\<F12>" else return char."\<Esc>gvlA\<CR>=Redraw()\<CR>\<F12>" endif endfunction function! Redraw() redraw return '' endfunction 

    Затем нажмите Ctrl-v I, как обычно, и нажмите F12 . Он будет вставлять и показывать все строки, измененные для каждого нажатия клавиши.

    Примечание: сценарий был бы лучше, если бы нажатие F12 перешло в режим вставки, вместо того чтобы требовать, чтобы вы каждый раз нажимали I. Возможно, команда startinsert в сочетании с vnoremap может это сделать.

    Interesting Posts

    Обнаружение утечки памяти ядра

    Должен ли маршрутизатор wifi обрабатывать DHCP для своих клиентов?

    Почему вход в канал хорошо подходит для zenity, но <файловые неполадки?

    Файлы Rsync, исключая список

    потерянная способность sudo после изменения модуля pam

    Имитировать сетевой кабель без подключения всех маршрутов

    Я не могу войти в Ubuntu 12.04

    Будет ли система проверять синхронизацию mdadm до завершения перезагрузки?

    как установить или узнать драйвер масштабирования в ядре linux

    Почему используется некоторое пространство файловой системы, даже если файловая система пуста?

    Как настроить KDE / Gnome-Remote-Server с CentOS 6

    Значение времени ping статистики

    Отключить оболочку пользователя по соображениям безопасности

    Изменение объема%, который изменяется каждый раз, когда я уменьшаю его с клавиатуры

    Как предотвратить создание символической ссылки внутри себя?

    Linux и Unix - лучшая ОС в мире.