IdeaVIM: Как мне удобно переименовать извлекаемую переменную?
В IdeaVIM, если я извлекаю переменную и хочу назвать ее, кажется, что я нахожусь в визуальном режиме (имя переменной подсвечено), но я не могу найти способ изменить то, что выделено. Вот изображение:
Если я наберу c
ничего не делает. Если я наберу cc
, это меняет всю строку. По сути, он действует как будто я в командном режиме, но имя подсвечивается, как будто оно в визуальном режиме. То, что я хочу сделать в 99% случаев, это изменить это слово. Тем не менее, курсор раздражает один символ после слова так ciw
не меняет это.
Какой удобный способ переименовать эту переменную? Я обычно делал hciw
, Я бы предпочел, чтобы "переменная извлечения" переводила меня прямо в режим вставки.
2 ответа
Это немного нелогично, но самое простое - сразу i
чтобы войти в режим вставки, затем начните вводить новое имя, и оно заменит выделенный текст.
Проблема, на мой взгляд, заключается в том, что vim является модальным, а ванильный IntelliJ также модальным, и здесь у вас есть взаимодействие двух наборов мод. Чтобы понять режимы IntelliJ, попробуйте отключить IdeaVIM с помощью ^Z
и используйте рефакторинг переменной extract. Обратите внимание, что если вы начнете печатать сразу, то, что вы печатаете, заменяет выделенный текст, но если вы сначала переместите курсор, а затем начнете печатать, то то, что вы печатаете, вставляется в курсор. Теперь добавьте IdeaVIM в смесь: как только вы находитесь в режиме вставки, поведение IntelliJ начинает действовать.
См. VIM-274 для запроса об изменении этого поведения и некоторого обсуждения альтернатив.
Для "Извлечь переменную", как только вы дойдете до точки, где предлагаются имена:
Все, что всегда работает, это нажать Escape, b, cw, а затем набрать новое имя. Иногда вы можете сразу нажать b, но часто по какой-то причине это переводит меня в визуальный режим, поэтому нажатие Escape гарантировано.