2

Есть ли способ в 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 Code.

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

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

    :s/ /:/ g

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

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

4 ответа4

4

Догадаться:

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

.s/ /:/ g

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

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

1

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

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

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

1

Просто :s/ /:/g будет хорошо.

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

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

-1

ты хочешь сделать это?

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .