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

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

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

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

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

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

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

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

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

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

Благодаря!

  • TERM = (linux | xterm) vi в xterm или проблема AAABBBBBBCCDDD
  • vim настраивается с помощью команд emacs (только в режиме ввода)
  • Как выбрать полный файл в vi, который будет вставлен в gedit?
  • Как изменить имя vim-буфера
  • Проверка файла vi .swp для предварительного восстановления
  • `grep -l .. | xargs vim` генерирует предупреждение, почему?
  • Функция завершения командной строки Bash для vim и emacs 'scp: //' Удаленные пути к файлам
  • Команды Bash внутри vi
  • 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 может это сделать.

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