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 .

  • zsh не работает при завершении пути, когда команда vim
  • Почему моя строка статуса vim говорит «Получение ../»?
  • удалить строку в vi
  • Как использовать FileType в Vim?
  • Команды VIM для скриптов Bash
  • filename с новой строкой в ​​списке каталогов Netrw vim
  • Как заставить vim работать с tmux правильно?
  • Минимизировать текущую ширину окна в Vim
  • Как выбрать полный файл в vi, который будет вставлен в gedit?
  • Vim & Vimperator: Карта Windows / Мета ключ?
  • Установить Gvim после vim
  • Linux и Unix - лучшая ОС в мире.