Возвышенный текст сначала выбирается в каждой строке
В Vim есть действительно хорошая функция, чтобы найти/заменить первое вхождение в каждой строке. Это фактически поведение по умолчанию.
Как я могу получить такое же поведение в возвышенном тексте?
Мне нужно иметь возможность отмечать/находить символ FIRST (и только первый!), например. '=' в каждой строке, так что я легко могу отметить/скопировать/вырезать то, что раньше и что после этого конкретного символа. Имейте в виду, что в каждой строке может быть много этого конкретного символа.
Конкретный пример:
У меня есть длинный список java-свойств в форме:
my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>
Я хочу отметить первую "=" в каждой строке, чтобы иметь возможность выбрать весь предыдущий текст (безразличный от количества текста, предшествующего "=" ), чтобы вырезать или скопировать текст. Результатом пасты такого действия было бы следующее:
my.property.link1
my.property.link22
my.property.link333
my.property.link4444
Ответы
Ответ 1
Предположим, что у вас есть следующий текст:
my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>
Нажмите Ctrl + F (или выберите Find- > Find)
Включить регулярные выражения
Введите поле поиска: ^.*?(?==)
Preess Alt + Enter (или нажмите "Найти все" )
Теперь выбран весь текст до =
, вам просто нужно его скопировать.
Ответ 2
На самом деле я написал возвышенный плагин под названием SelectUntil, который обращается к этой точной проблеме: https://github.com/xavi-/sublime-selectuntil
После установки вы можете сделать следующее
- Выберите всю строку, которую вы хотите отредактировать или частично скопировать.
- Нажмите Cmd/Ctrl + Shift + L - это дает каждой строке собственный указатель.
- Подведите курсор к началу строки, нажав Home или Ctrl + A, если вы используете OSX
- Нажмите Ctrl/Alt + Shift + S, чтобы активировать SelectUntil
- Скажите SelectUntil, чтобы выбрать знак равенства, набрав = + Enter
- Нажмите Shift + ←, чтобы отменить знак равенства
- В этот момент должны быть выбраны имена всех свойств, чтобы вы могли скопировать/вставить, как вы хотели бы
Опыт должен выглядеть примерно так:
![enter image description here]()
Ответ 3
Пробовал это и, похоже, работает:
Найти выражение с помощью ^ (. *) (STRING_TO_MATCH)
\ 1 даст все вещи перед вашим матчем, \2 дает совпадение.
Вы также можете использовать ^ (. *) (STRING_TO_MATCH) (. *), а затем \3 будет всем после.
Изменить - если вы хотите выбрать и скопировать, я попробовал это: ^[^CHAR]*
Это найдет все, начиная с начала строки до и не включая вашего персонажа. Оттуда вы можете щелкнуть правой кнопкой мыши, чтобы скопировать. Я не нашел последовательность клавиш, чтобы сделать это, так как панель поиска имеет фокус, возможно, вы можете понять это.
Ответ 4
Предположим, что у вас есть следующий текст:
AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC
.. и вы хотите заменить каждое первое вхождение A в каждой строке на X:
Нажмите Ctrl + H (или выберите Find- > Replace)
Найти что: A(.*)
Заменить с помощью: X\1
Затем нажмите "Заменить все".
Ответ 5
Выберите все с помощью Ctrl + A
, затем нажмите Ctrl + Shift + L
и, наконец, перейдите к разделу "Выбор- > Инвертировать выбор", как картинка et Voila!:
![Инвертировать выбор]()