Есть ли в 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-код.
Есть ли способ:
- Скопировать указанный отпечаток пальца в мой буфер обмена.
- Отредактируйте мой .hgrc с помощью vi(m)
- Перейдите в режим вставки, чтобы вставить указанный отпечаток пальца.
Нацельтесь только на эту линию с помощью
:с/ /:/г
Сохраните файл
Сейчас я могу вставить отпечаток в новый файл, выполнить замену и вставить его в свой .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>