Pull to refresh

Comments 39

При всём том качестве гифок и объёме проделанной работе, пост про один хоткей? Вы серьёзно? При том что фича весьма известная и обычный мультикрусор по альту умеет множество редакторов. Вимеры вообще тихо хихикают от подобных «фич».

Статья не совсем про хоткий, а скорее про саму идею мультиселекта. Из коллег-разработчиков, я замечал что от силы 20% используют эту "фичу", и ещё меньше делают это наполную.
Важное отличие приведенных примеров от мультикурсора по альту это именно выделение шаблонов. Из своего опыта, в 90% использовании мультиселекта одним альтом не обойдешься.
Вимеры могут хихикать, но тут вопрос не холивара, а повышения производительности тех, кто уже выбрал темную сторону IDE. Вимеры могут игнорировать посты про Android studio.


пс я работаю с основном с идеей, и там хоткий другой по умолчанию (alt+j). И мне кажется в студии вряд ли он ctrl+g (ибо это стандартный переход на строку).
Кстати, если вдруг кто будет читать, альтернатива для alt+select на клавиатуре (без мыши) ctrl+ctrl и стрелки. По крайней мере в идее именно так

"хихи"…
Самое детальное описание одного хоткея, что я видел…
Видел мультивыделение вживую единственный раз — коллега попытался использовать эту неведомую фигню в Visual Studio, но не вспомнил, как :) За все 10 лет, что занимаюсь программированием, никогда не сталкивался. Обычно там, где это нужно, автозамена аещё быстрее работает.
Спасибо, что вставили гифки.так гораздо проще усваивается статья, чем если бы была полностью описана текстом. Плюс время секономили
Жаль, что мало кто использует гифки в статьях. Преимуществ же много, правда создавать муторно — вот главная проблема.
Иногда одной гифкой можно целую статью заменить, поэтому иногда оно того стоит ) Интересно, ализар так сможет?))
Ализара самого можно заменить одной гифкой.
В чем сложность использовать любую программу для записи, например ScreenToGif?
Не всегда достаточно просто записать экран, часто надо рисовать схемы, презентации, анимации.
В примерах «обычных», без хоткея, я вижу как вы выделяете, и правите текст.
Все примеры с мультикурсором — только выделение, никаких исправлений. Как-то непонятно, зачем выделять? Я что-то пропустил?

Чем плоха обычная автозамена текста в выделенном блоке?

Постараюсь ответить за автора:


только выделение, никаких исправлений

Если я правильно понял ваш вопрос, то там после выделения выполняется несколько действий:


  1. выделили
  2. перешли в конец и выделили числа (почему не сразу выделили числа, я не знаю)
  3. преобразовали их в последовательность
  4. подготовили константы, добавив "Example." и перенесли их в IntDef

Чем плоха обычная автозамена текста в выделенном блоке?

Ничем, в большинстве случаев они взаимозаменяемы. Но как по мне, то работа с мультиселектом более быстрая и удобная (не нужно переходить в специальное поле и там что-то писать). Вы просто продолжаете писать код. До того, как в идею добавили мультиселект, я тоже не понимал в чем разница, а потом распробовал.
К тому же некоторые вещи через замену делать ну очень не с руки. Например вы использовали названия myCat и myDog, но затем решили что cat и dog выглядят лучше:


  1. С помощью мультиселекта выделяем все " my",
  2. удаляем my
  3. выделяем следующую букву через шифт
  4. делаем lowercase.

Хотя по большей части разница использовать мультиселект или нет — не такая большая. На "полностью изменивший принцип моей работы" явно не тянет. Но попробовать я бы точно советовал.


пс у идеи была неплохая гифка по юз кейзу этой фичи, когда она вышла: https://d3nmt5vlzunoa1.cloudfront.net/idea/files/2014/03/multiple_selections.gif

Просто странно, что для других способов, в статье гифки показывают процесс целиком, а для мультизамены — только сам процесс выделения, и если у меня под ругой нет IDE, я никак не пойму как оно работает. Зачем тогда гифки?
К тому же некоторые вещи через замену делать ну очень не с руки. Например вы использовали названия myCat и myDog, но затем решили что cat и dog выглядят лучше:

С помощью мультиселекта выделяем все " my",
удаляем my
выделяем следующую букву через шифт
делаем lowercase.

Вы выбрали неудачный пример.
Ищем с включёнными regex: my(\w+)
Заменяем на: \L$1\E

Это определённо удобнее, чем танцы с курсорами.

Не говоря уже о том, что если мы говорим про IDEA и язык, для которого поддерживается рефакторинг, то правильнее будет просто нажать Shift-F6, стоя на нужном нам идентификаторе.

Все мы разные, у всех свои привычки, сильные и слабые стороны. Лично для меня искать с регексом и делать паттерн для замены гораздо дольше, чем выделить 3 символа, нажать 1 хоткий, нажать delete.
Я с радостью стал применять мультиселект вместо автозамены в большинстве случаев, когда джет брейнс реализовали эту фичу. Но до этого не понимал, зачем нужен мультиселект, если есть автозамена. Хотя на тот момент мне было известно только про селект через alt+выделение, который действительно редко нужен.


Не говоря уже о том, что если мы говорим про IDEA и язык, для которого поддерживается рефакторинг, то правильнее будет просто нажать Shift-F6, стоя на нужном нам идентификаторе.

В примере я привел 2 идентификатора осознанно. В данном случае рефакторинг бы потребовался для обоих. К тому же рефакторинг доступен далеко не всегда: текст в джаве, текстовые файлы и т.п.


Всему свое время и место. Если есть возможность использовать рефакторинг, лучше использовать его. Если предстоит сложная замена, то лучше использовать её. Однако если нужно заменить несколько одинаковых паттернов в пределе одного небольшого метода, то для меня мультиселект лучше и быстрее по ряду причин.

Здесь та же проблема как у любителей вима — сразу пишется кривой код на основании копипаста, а затем героически с этим борются, но копипаст остаётся.
Не работал с андроидом, поэтому возник вопрос — почему не старый добрый enum?
потому что жрет много памяти
https://developer.android.com/training/articles/memory.html#Overhead
Вот что-то, а не использовать enum потому, что он жрёт много памяти — это, IMHO, вообще бред.
Преимущества значительно перевешивают недостатки.
Память, занимаемая всеми ссылками на enum'ы, обычно значительно меньше той, которую приложение забивает всякой ерундой. Это могло бы быть актуально на JavaME (но увы, там фич Java 5 вообще нет), но когда приложению доступны мегабайты памяти, отказываться от enum нет смысла.
enum потребляет в 2 больше памяти, раньше в документации было написано
Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.


на сколько я понял, это уже исправили
Удобная вещь, оценил, когда использовал некоторое время Sublime.
Говорят, что наконец в NetBeans появится, так как жутко не хватает.
Но вообще, нужно с осторожностью, так как по статьях о анализаторе C++, который тут время от времени рекламируется, сделал главный вывод: процентов 20 странных мест случается из-за копи-паста фрагментов кода.
Да community у редактора хорошее, не думаю, что это сильно повлияет на разработку.
Да и аналогов сейчас больше чем нужно. Когда наступит момент, что программу окончательно забросят — всегда есть Eclipse, Sublime, JetBrains, Notepad++ с плагинами, Atom…
Какая разница, главное, чтобы писать качественный код. Пока для этого NetBeans хватает.

А разве это только в android studio имеется? Мне кажется, во всех IDE от jetbrains, включая IntelliJ IDEA есть такие функции.

Не, это не спортивно.
Программисты ленивые люди и им лень запоминать все эти комбинации, которые варьруются от IDE к IDE и на которые нельзя полагаться.
Тру-программеры сокращают вышеприведённый спагетти-код с использованием дженериков, лямбды и прочих техник
и прочих техник

Это вы про boilerplate code generation?
вообще-то, к «прочим техникам» можно относить всё, что угодно, что сокращает код.
У многих даже есть специальный прикрепленный джуниор, который отзывается на «набросай мне тут case-сниппет на восемь веток, я пока покурю схожу».

Осталось дождаться критического количества тру-программеров, которые создадут такой мета-язык, в котором вообще не надо никакого кода писать. Чистая алгоритмика. Ну почти как Wolfram, наверное… Что бы людям остался только творческий процесс. Ну, знаете, как в цивилизациях, где все роботизировано и автоматизировано. А то лямбды и дженерики — это неспортивно:))
Вместо копирования-вставки можно использовать Ctrl+D (В маке, видимо, CMD + D). Ну и не согласен с комментаторами насчет детсада. Хоткеи, конечно, можно и нужно изучить, но всегда можно «провтыкать» что-то или не оценить каких-то возможностей. Люди для того и делятся информацией, что она кому-то может оказаться полезной. Если она кому-то очевидна, то это не значит, что она не нужна кому-то другому. Считать, иначе и есть как раз детсад и инфантилизм в чистом его проявлении. Никто же не мешает увидеть, что информация для читающего неактуальна и просто закрыть статью верно? :)

Спасибо! В сублайме/атоме знал про Ctrl-D (Cmd-D в маках), а в идеях всё забывал посмотреть хоткей. Хочу добавить, что ещё курсоров можно надобавлять, если зажать Ctrl-Alt-Shift (Cmd-Alt-Shift в маках) и ткнуть мышкой на место, или вести мышкой по строкам. Ещё вариант — дважды нажать Ctrl (Alt на маках) и нажимать стрелочки.
Удобно, если надо добавить/убрать курсоры на определённой позиции или добавить курсоры сразу на несколько подряд идущих строк.


https://www.jetbrains.com/help/idea/2016.2/multicursor.html

Просто Cmd+щелчок дает возможность использовать мультикурсор :)
Ни в одной статье так не разрывало от желания плюсовать почти каждый комментарий. Круче — только статья про кнопку… ну, Backspace там, PgUp.
А в Xcode такое есть? Кто нибудь знает?
Сколько коментов посыпалось на Автора :)
Из опыта могу сказать, такя «фича» в начале радовала немерено, теперь для меня это инструмент для рефактора гов… кода при пеер-ревю или анализ всяких логов файлов и консольного шлака. В осатльном функция «рефактор» в нормальном IDE справляеться лучше.
Автор, не обращай внимание, хорошая статья. Заботиться о своей производительности правильно и мультикурсор в продуктах JetBrains это не «тупо хоткей». Кому интересно, этот парень собирает у себя в блоге подобные фишки (в основном тривиальные, но с гифками, да!): https://plus.google.com/collection/wtO0PB. Ну, или часовое видео от серьезного дяди: https://blog.jetbrains.com/idea/2015/10/intellij-idea-tips-and-tricks/. Хихикающие вимеры могут и дальше править свои пол-скрипта в консоли.
А мне понравилось, а то обычно напускают много пыли, сотрясают воздух, а выхлопа нет.
Sign up to leave a comment.

Articles