Комментарии 39
Статья не совсем про хоткий, а скорее про саму идею мультиселекта. Из коллег-разработчиков, я замечал что от силы 20% используют эту "фичу", и ещё меньше делают это наполную.
Важное отличие приведенных примеров от мультикурсора по альту это именно выделение шаблонов. Из своего опыта, в 90% использовании мультиселекта одним альтом не обойдешься.
Вимеры могут хихикать, но тут вопрос не холивара, а повышения производительности тех, кто уже выбрал темную сторону IDE. Вимеры могут игнорировать посты про Android studio.
пс я работаю с основном с идеей, и там хоткий другой по умолчанию (alt+j). И мне кажется в студии вряд ли он ctrl+g (ибо это стандартный переход на строку).
Кстати, если вдруг кто будет читать, альтернатива для alt+select на клавиатуре (без мыши) ctrl+ctrl и стрелки. По крайней мере в идее именно так
Самое детальное описание одного хоткея, что я видел…
Все примеры с мультикурсором — только выделение, никаких исправлений. Как-то непонятно, зачем выделять? Я что-то пропустил?
Чем плоха обычная автозамена текста в выделенном блоке?
Постараюсь ответить за автора:
только выделение, никаких исправлений
Если я правильно понял ваш вопрос, то там после выделения выполняется несколько действий:
- выделили
- перешли в конец и выделили числа (почему не сразу выделили числа, я не знаю)
- преобразовали их в последовательность
- подготовили константы, добавив "Example." и перенесли их в IntDef
Чем плоха обычная автозамена текста в выделенном блоке?
Ничем, в большинстве случаев они взаимозаменяемы. Но как по мне, то работа с мультиселектом более быстрая и удобная (не нужно переходить в специальное поле и там что-то писать). Вы просто продолжаете писать код. До того, как в идею добавили мультиселект, я тоже не понимал в чем разница, а потом распробовал.
К тому же некоторые вещи через замену делать ну очень не с руки. Например вы использовали названия myCat и myDog, но затем решили что cat и dog выглядят лучше:
- С помощью мультиселекта выделяем все " my",
- удаляем my
- выделяем следующую букву через шифт
- делаем lowercase.
Хотя по большей части разница использовать мультиселект или нет — не такая большая. На "полностью изменивший принцип моей работы" явно не тянет. Но попробовать я бы точно советовал.
пс у идеи была неплохая гифка по юз кейзу этой фичи, когда она вышла: https://d3nmt5vlzunoa1.cloudfront.net/idea/files/2014/03/multiple_selections.gif
К тому же некоторые вещи через замену делать ну очень не с руки. Например вы использовали названия myCat и myDog, но затем решили что cat и dog выглядят лучше:
С помощью мультиселекта выделяем все " my",
удаляем my
выделяем следующую букву через шифт
делаем lowercase.
Вы выбрали неудачный пример.
Ищем с включёнными regex:
my(\w+)
Заменяем на:
\L$1\E
Это определённо удобнее, чем танцы с курсорами.
Не говоря уже о том, что если мы говорим про IDEA и язык, для которого поддерживается рефакторинг, то правильнее будет просто нажать Shift-F6, стоя на нужном нам идентификаторе.
Все мы разные, у всех свои привычки, сильные и слабые стороны. Лично для меня искать с регексом и делать паттерн для замены гораздо дольше, чем выделить 3 символа, нажать 1 хоткий, нажать delete.
Я с радостью стал применять мультиселект вместо автозамены в большинстве случаев, когда джет брейнс реализовали эту фичу. Но до этого не понимал, зачем нужен мультиселект, если есть автозамена. Хотя на тот момент мне было известно только про селект через alt+выделение, который действительно редко нужен.
Не говоря уже о том, что если мы говорим про IDEA и язык, для которого поддерживается рефакторинг, то правильнее будет просто нажать Shift-F6, стоя на нужном нам идентификаторе.
В примере я привел 2 идентификатора осознанно. В данном случае рефакторинг бы потребовался для обоих. К тому же рефакторинг доступен далеко не всегда: текст в джаве, текстовые файлы и т.п.
Всему свое время и место. Если есть возможность использовать рефакторинг, лучше использовать его. Если предстоит сложная замена, то лучше использовать её. Однако если нужно заменить несколько одинаковых паттернов в пределе одного небольшого метода, то для меня мультиселект лучше и быстрее по ряду причин.
https://developer.android.com/training/articles/memory.html#Overhead
Преимущества значительно перевешивают недостатки.
Память, занимаемая всеми ссылками на enum'ы, обычно значительно меньше той, которую приложение забивает всякой ерундой. Это могло бы быть актуально на JavaME (но увы, там фич Java 5 вообще нет), но когда приложению доступны мегабайты памяти, отказываться от enum нет смысла.
Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.
на сколько я понял, это уже исправили
Говорят, что наконец в NetBeans появится, так как жутко не хватает.
Но вообще, нужно с осторожностью, так как по статьях о анализаторе C++, который тут время от времени рекламируется, сделал главный вывод: процентов 20 странных мест случается из-за копи-паста фрагментов кода.
Да и аналогов сейчас больше чем нужно. Когда наступит момент, что программу окончательно забросят — всегда есть Eclipse, Sublime, JetBrains, Notepad++ с плагинами, Atom…
Какая разница, главное, чтобы писать качественный код. Пока для этого NetBeans хватает.
А разве это только в android studio имеется? Мне кажется, во всех IDE от jetbrains, включая IntelliJ IDEA есть такие функции.
Программисты ленивые люди и им лень запоминать все эти комбинации, которые варьруются от IDE к IDE и на которые нельзя полагаться.
Тру-программеры сокращают вышеприведённый спагетти-код с использованием дженериков, лямбды и прочих техник
и прочих техник
Это вы про boilerplate code generation?
Спасибо! В сублайме/атоме знал про Ctrl-D (Cmd-D в маках), а в идеях всё забывал посмотреть хоткей. Хочу добавить, что ещё курсоров можно надобавлять, если зажать Ctrl-Alt-Shift (Cmd-Alt-Shift в маках) и ткнуть мышкой на место, или вести мышкой по строкам. Ещё вариант — дважды нажать Ctrl (Alt на маках) и нажимать стрелочки.
Удобно, если надо добавить/убрать курсоры на определённой позиции или добавить курсоры сразу на несколько подряд идущих строк.
Из опыта могу сказать, такя «фича» в начале радовала немерено, теперь для меня это инструмент для рефактора гов… кода при пеер-ревю или анализ всяких логов файлов и консольного шлака. В осатльном функция «рефактор» в нормальном IDE справляеться лучше.
CTRL + G — хоткей, полностью изменивший принцип моей работы