Для замены текста выберите только одну строку в vim

Для замены текста выберите только одну строку в vim

Есть ли в vi(m) способ выбрать одну конкретную строку в файле для замены строки?

Мне часто нужно добавлять SSL SHA-отпечатки с веб-серверов в мой Mercurial .hgrc. Я могу довольно легко получить требуемую подпись из Chrome, дважды щелкнув на замке и посмотрев данные сертификата, но я получаю подпись с разделителями-пробелами, а не с разделителями-двоеточиями, как того требует Mercurial

06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90

Пример изGoogle-код.

Есть ли способ:

  1. Скопировать указанный отпечаток пальца в мой буфер обмена.
  2. Отредактируйте мой .hgrc с помощью vi(m)
  3. Перейдите в режим вставки, чтобы вставить указанный отпечаток пальца.
  4. Нацельтесь только на эту линию с помощью

    :с/ /:/г

  5. Сохраните файл

Сейчас я могу вставить отпечаток в новый файл, выполнить замену и вставить его в свой .hgrc с помощью:r имя файла, но это дополнительный шаг, который я бы не прочь пропустить.

решение1

Догадаться:

Переместите курсор на строку, которую вы хотите модифицировать, и сделайте следующее:

.с/ /:/г

Символ «.» перед командой замены сообщает vi(m), что вы хотите изменить только текущую строку.

Ссылка:http://www.kingcomputerservices.com/unix_101/search_and_replace_with_vi_part_1.htm

решение2

Если вы хотите вставить его после строки N:

:N put =substitute(@+, ' ', '', 'g')

Конец файла: N=$; начало файла: N=0. @+ — регистр буфера обмена (при работе графического интерфейса).

решение3

Просто :s/ /:/gбудет достаточно.

По умолчанию команда :substituteработает только в текущей строке.

Глобальный /gмодификатор означает замену всех совпадений в указанном диапазоне, а не всего файла.)

решение4

Вы собираетесь это сделать?

echo "06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90" >> <filename>

Связанный контент