Редакторы, IDE и все-все-все
Редакторы, IDE и все-все-все
1 Редакторы
- Обычные
- Модальные
2 IDE
3 Отдельные языковые инструменты
4 Примеры:
- Neovim
- Kakoune
5 IntelliJ IDEA
Редактор
Редактор — это самостоятельная программа или компонент программного комплекса, такой как редактор исходного кода в интегрированной среде разработки или окно ввода в браузере.
Редактор предназначен для создания и изменения текстовых данных и файлов.
Примером редактора является sed
, который мы ранее изучали. Он полностью соответствует определению
редактора, но нас интересуют редакторы именно с интерфейсом (TUI или GUI).
Редактор
Редакторы бывают с текстовым пользовательским интерфейсом (TUI):
- kakoune;
- Neovim;
- Emacs;
- древний Nano;
И с графическим пользовательским интерфейсом (GUI):
- Helix;
- Visual Studio Code — широко используемый редактор с мощными возможностями расширения;
- Sublime Text — известен своей скоростью и гибкостью;
- Fleet — новый редактор от JetBrains, который обещает интеграцию современных функций и улучшенную производительность;
- бесчисленное множество других.;
Существует множество других редакторов, каждый со своими уникальными особенностями и преимуществами.
Модальный редактор
Обычный (немодальный) блокнот в Windows работает в одном режиме: набор текста.
Модальные же редакторы имеют несколько режимов.
Так, у Vim и, например, Neovim их три:
- Основной (normal) — для перемещения курсора и выполнения команд;
- Набор (insert) — режим для набора текста;
- Визуальный (visual) — для выделения текста.
В kakoune режима два:
- Основной (совмещает визуальный и основной);
- Набор.
Другие модальные редакторы:
- Helix
IDE
Integrated Development Environment (IDE) — это среда разработки, которая обычно включает в себя множество встроенных модулей:
- Расширенные подсказки благодаря построению индекса проекта;
- Файловый менеджер;
- Интеграция с Continuous Integration (CI);
- Отладчик;
- Текстовый редактор;
- и другие инструменты.
Эти модули “интегрированы” в один продукт, отсюда и название.
Примеры IDE:
- Visual Studio IDE (популярная среда для разработки на C#, C++ и других языках)
- IntelliJ IDEA (и смежные продукты, такие как Rider, PyCharm, Data Grip)
- Eclipse (хотя он считается устаревшим и многие разработчики перешли на более современные альтернативы)
В IDE всё легко
В IDE всё легко:
- Легко проводить некоторые из возможных преобразований кода.
- Легко работать с проектами, включающими код на многих языках.
- Легко рисовать графические интерфейсы и настраивать базы данных.
- Легко устанавливать плагины.
- Легко породить плохо структурированный код, который можно читать только в IDE.
- Легко напороться на баг в IDE, из-за которого перестанет работать вообще всё.
- Легко перестать понимать, как проект собирается (и почему иногда не собирается).
Мораль: опытный программист пусть пользуется чем хочет, а остальным придётся в какой-то момент разобраться, как всё работает под капотом.
Отдельные языковые инструменты
Отдельные языковые инструменты
-
Linter : Программа, сообщающая о стилистических проблемах и предупреждающая о возможных ошибках.
Haskell :
hlint
;shell :
shellcheck
;Python : Тысячи их; пусть будет
pylint
;Rust : clippy;
C++ :
clang-tidy
… -
Formatter : Программа, автоматически выравнивающая код согласно установленному стилю. Не тратьте ни минуты на подсчёт пробелов!
Haskell :
brittany
;Python : Тысячи их; пусть будет
YAPF
;Rust :
rustfmt
;C++ :
clang-format
… -
Tree sitter: Библиотека для обхода редакторами синтаксических деревьев.
LSP
Ссылка: https://microsoft.github.io/language-server-protocol/
Language Server Protocol (LSP) — это открытый протокол на основе JSON-RPC для коммуникации между редакторами/IDE и языковым сервером.
Протокол описывает следующие функции, полезные для написания кода:
- Автодополнение;
- Подсветка синтаксиса;
- Подсказки ошибок;
- Инструменты для рефакторинга и другие.
LSP
Цель LSP — разделить разработку и поддержку языка программирования от разработки редактора или IDE.
Для каждого языка программирования создается своя реализация LSP, часто с открытым исходным кодом: список существующих реализаций.
Может быть использован как в редакторах, так и в IDE.
Большинство современных редакторов и IDE либо по-умолчанию уже поддерживают LSP, либо где-то наверняка существует плагин для подключения LSP и его стоит поискать.
Примеры
IntelliJ IDEA
Для успешной работы с IDEA достаточно знать сочетание клавиш Shift + Shift
, оно открывает окно Search
Everywhere.
Через него можно найти всё остальное:
- Функции, методы, классы и другие абстракции, доступные в проекте;
- Действия и настройки самой IDE;
- Редакторские действия, такие как выделение переменной или метода, определение заглушек для методов;
- Действия для CI;
- И многое другое.
Источник: https://resources.jetbrains.com/help/img/idea/2022.3/search_everywhere_pull.png
IntelliJ IDEA
IntelliJ IDEA — это интегрированная среда разработки программного обеспечения от JetBrains. Она поддерживает множество языков программирования, включая Java, JavaScript и Python.
Источник: https://plugins.jetbrains.com/files/12169/screenshot_19216.png
IntelliJ IDEA
В IntelliJ IDEA есть встроенный текстовый редактор с продвинутым автодополнением, основанным на анализе кода проекта и стандартной библиотеки.
Однако из-за этого IDEA может быть относительно медленной и требовательной к ресурсам, особенно при перестройке индекса для автодополнения.
В IDEA также имеются отладчик, менеджер файлов, интеграция с CI и системами контроля версий, а также локальная история изменений.
NeoVim
Ссылка: https://neovim.io/
Neovim - это форк Vim. Появился с целью улучшить кодовую базу Vim, позволяющий упростить реализацию API, улучшить пользовательский опыт и упростить процесс внедрения новых плагинов.
Получилось не всё, но Neovim вдохновил такие редакторы, как kakoune и Helix.
Как начать пользоваться
Если никогда не пользовались модальным редактором до этого, то рекомендуется начать приключение с vimtutor
— он идёт вместе с neovim.
Пройдите его хотя бы один, а лучше несколько раз, там и про то, что у neovim несколько режимов (как и у других модальных редакторов):
- insert для ввода текста;
- command для выполнения команд самого редактора;
- visual для визуального выделения курсором;
И про то, как использовать все основные действия. И про многое другое.
Книга “Practical Vim” доучивает остальному.
Перемещение курсора
Если Вы уже имели опыт с модальным редактором, то ниже короткая справка.
Чтобы переместить курсор в основном режиме (в него всегда можно выйти с помощью ESC
):
Команда | Действие |
---|---|
3j | на три строки ниже |
5k | на пять строк выше |
h | влево на один символ |
l | вправо на один символ |
w | в начало следующего слова |
e | в конец слова |
f) | найти следующую скобку |
F) | найти предыдущую скобку |
17G | на строку 17 |
gg | на первую строку |
G | на последнюю строку |
Команды/действия
Но перемещение курсора, конечно, не единственное, что можно делать в основном режиме. В общем виде команды такие:
Действие | Количество | Объект |
---|---|---|
d elete | 3 | w ord |
c hange | p aragraph | |
y ank (copy) | h left | |
v isually select | j next line | |
> increase indent | k prev line | |
= fix indent | l right | |
e nd of word | ||
b eginning of previous word | ||
i} in }‘s |
Набор
Для перехода в режим набора текста можно воспользоваться следующими командами:
Команда | Действие |
---|---|
i | начать набор прямо перед курсором |
a | начать набор после курсора |
I | набор в начале строки |
A | набор в конце строки |
Выход обратно в основной режим: ESC
Помимо этого можно исполнять shell-команды и выводить результат в текущий буфер, искать вхождения по регулярному выражению, подключать различные плагины (и, как следствие, lsp) и пр.
Наберите команду :help + Enter
в основном режиме для ознакомления.
kakoune
Ссылка: https://kakoune.org/
kakoune — это vim-inspired редактор, поэтому многое в нём похоже или унаследовано от vim. Но обычно чище и всё же есть довольно важные отличия.
В kakoune также поддерживаются плагины, можно через них подключить lsp, также есть подсветка синтаксиса и т.п.
Он точно также модальный, но, как ранее уже упоминалось, основной и визуальный режим совмещены.
Вместо курсора в kakoune в основном режиме всегда есть минимум одно выделение.
kakoune. Выделение
Поэтому все перемещения работают не с курсором, а с выделением:
Команда | Действие |
---|---|
w | выделить следующее слово |
W | не скидывать старое выделение и выделить следующее слово |
b | выделить предыдущее слово |
B | старое выделение + предыдущее слово |
… |
Действия применяются уже к этим выделениям, так оказывается намного удобнее: благодаря выделению сразу видно к какой части текста будет применена команда.
kakoune. Регулярные выражения
Ещё одно важное отличие и преимущество kakoune по сравнению с Vim: активное использование регулярных выражений.
Попробуйте сами открыть файл с содержимым выше и выполнить (усложнённая регулярка для демонстрации):
3j 9J Gl s (ввести: ^\s+\K\\.*?bf + Enter)
c \textit
ESC :w + Enter
emacs
- На самом деле не редактор, а среда для исполнения программ на особом
диалекте языка LISP, в которую встроен убогий редактор по умолчанию.
Можно туда установить vim. - Медленный на больших файлах.
- Медленный в принципе.
- Встроен тетрис.
- Тут можно жить: настроить веб-браузер, почтовый клиент, vim, IRC, программу для TODO, и будет единая среда, в которой всё на одном языке и легко настраивается.