Vim заменить в визуальном режиме

В блоке теста, подобном этому

cron.allow cron.deny 

Я хочу заменить cron на, только в диапазоне, выделенном визуальным режимом (ctrl + v). Поэтому я нажимаю ctrl + v: и появляюсь! сообщение

 sed s:cron:at:gc 

но я вижу только эту ошибку

 :'<,'>! sed s:cron:at:gc shell end return code 1 7 lines filteerd 

и это после возвращения

 sed: expression -e #1, caracther 12: option `s' unknown 

Зачем?

3 Solutions collect form web for “Vim заменить в визуальном режиме”

Как только в режиме visual block с выбранными линиями попробуйте это:

 :'<,'>s/cron/at/g 

Vim имеет возможность поиска и замены без необходимости вызова внешней команды.

Обратите внимание, что из командной строки это удается:

 $ echo cron | sed s:cron:at: at 

Но это не так:

 $ echo cron | sed s:cron:at:c sed: -e expression #1, char 11: unknown option to `s' 

c не является опцией sed . Однако следующее будет работать:

 :'<,'>! sed s:cron:at:g 

Но, конечно, нет необходимости использовать sed для выполнения таких простых замещений в vim. Кроме того, если вы хотите c (подтвердить), используйте встроенную команду замены vim:

 :'<,'>s/cron/at/gc 

Кажется, вам не нужно использовать sed или замену вообще. Просто используйте команду change ( c ). Из документации:

 Visual-block change *v_b_c* All selected text in the block will be replaced by the same text string. When using "c" the selected text is deleted and Insert mode started. You can then enter text (without a line break). When you hit <Esc>, the same string is inserted in all previously selected lines. 

Ключ здесь: «Когда вы нажмете <Esc> , та же строка будет вставлена ​​во все ранее выделенные строки». Итак, все, что вам нужно сделать, это выделить блок cron text, нажать c , набрать, выйти из режима вставки, и вы получите желаемый результат замены каждого cron в блоке at .

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

Проблема с вашей командой в вашем вопросе заключается в том, что вы пытаетесь использовать внешнее sed , а команда s в sed не принимает флаг c .

  • Сделать vim / curl распознавать https: // ссылки
  • Заполнение вкладки ZSH: только полные файлы, а не двоичные файлы
  • Как показать номера строк в vim в правой части буфера?
  • VIM комментирует, что я вставляю
  • vim sudo hack auto reload
  • Как отображать скрытые символы при вводе текста?
  • Как переписать строки текста в vi / vim?
  • Невозможно вставить команду в vim 8.0
  • XTerm не обновляет изменения vim должным образом
  • Сопоставление фонового цвета в vim и tmux
  • Отображать и редактировать строки, соответствующие конкретному шаблону в vi
  • Linux и Unix - лучшая ОС в мире.