vim добавить символ перед числовым значением - PullRequest
3 голосов
/ 05 мая 2019

У меня есть несколько строк,

- astropy=3.1.2=py36h7b6447c_0
- ptyprocess=0.6.0=py36_0
- qt=5.9.7=h5867ecd_1
- xlwt=1.3.0=py36h7b00a1f_0
- lzo=2.10=h49e0be7_2

Я хочу выводить их как,

- astropy==3.1.2=py36h7b6447c_0
- ptyprocess==0.6.0=py36_0
- qt==5.9.7=h5867ecd_1
- xlwt==1.3.0=py36h7b00a1f_0
- lzo==2.10=h49e0be7_2

Я думал блокировать эти строки и shift + : и изменить = до ==.однако есть еще один знак =.Поэтому мне интересно, как добавить знак = перед числовым символом.

1 Ответ

6 голосов
/ 05 мая 2019

Похоже, ваша проблема в том, что вы хотите изменить только первый знак равенства, а не изменить второй.

Вы можете сделать это с помощью команды Vim's replace.По умолчанию команда будет изменять только первое совпадение в любой заданной строке, поэтому вы хотели бы сохранить его таким образом.

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

:% s / = / ==

Для получения дополнительной информации вы можете прочитать справку по команде, выполнив:

: help: s


Если вы хотите изменить все значения = перед числом (чтобы ответить на исходный вопрос), вы можете изменить шаблон поиска на знак равенства, а затем число и добавитьеще один знак равенства перед первым.Эта замена будет выглядеть следующим образом:

:% s / = \ d / = & / g

Чтобы разбить предыдущую команду:

% - Запустить команду для всего файла.

s - Запустить замещающую команду

/ - запустить шаблон поиска.

=- Найти символ знака равенства.

\d - Найти любое числовое значение (1, 143, 94 ...)

/ - Запустить значение замены.

= - добавить знак равенства к возвращаемому значению.

& - добавить шаблон поиска к измененному значению.

/g - выполнить эту команду глобально,то есть измените все совпадения, а не только первое в каждой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...