Промышленное программирование
Редакторы кода
- Очевидно, что написание кода и написание текста - абсолютно разные задачи
- Базово, и то, и другое можно писать в Блокноте, но продуктивным в обоих случаях это не назовешь
- Современные редакторы кода позволяют писать (и исследовать) код с большей продуктивностью, меньше отвлекаясь на ручное выполнение частых действий
- Многие разработчики настраивают редакторы (и среды разработки) под свои нужды, вплоть до шрифтов
2
Редакторы кода
- Условно, редакторы можно разделить на консольные, с графическим интерфейсом и продвинутые IDE (но грань сильно размыта)
- Среди консольных популярны vi/vim, emacs, nano, micro, ...
- Среди UI редакторов популярны Sublime Text, Atom, VS Code, Notepad++, ...
- Среди IDE популярны Intellij Idea и ее производные, Visual Studio, XCode, Eclipse, ...
- Каждая из этих категорий (и каждый из продуктов) имеют свои (субъективные) достоинства и недостатки
- Зачастую даже возникают "войны" фанатов различных редакторов
3
Vim
- Наиболее популярный консольный редактор кода
- Имеет непривычный формат взаимодействия с кодом, основанный на командах; может показаться сложным в освоении
- Вполне реальный у новичков вопрос, многими воспринимаемый как шутка: "Как выйти из vim?"
- Однако, один раз привыкнув, бывает сложно вернуться к обычному редактированию кода - и многие UI редакторы и IDE имеют возможность включить "vim mode"
- Многие приверженцы vim настраивают и расширяют его годами, так как он очень гибок и может порой посоревноваться с некоторыми IDE
- Для знакомства с vim можно позвать команду
vimtutor
4
Философия vim
- Vim придерживается философии модального редактирования. Это означает, что у него есть несколько режимов, и значения клавиш меняются в зависимости от режима. Вы перемещаетесь по файлу в нормальном режиме, вставляете текст в режиме вставки, выделяете строки в визуальном режиме, выполняете команды в режиме командной строки, и т.д
- Другая концепция, которая хорошо проявляет при модальном редактировании, это — операторы и перемещения. Оператор начинает некое действие, например, изменение, удаление или выделение текста. Затем при помощи перемещения вы указываете область текста, с которой вы хотите работать
- Глядя на то, как работают продвинутые пользователи Vim, можно заметить, что они как бы разговаривают на языке Vim или похожи на пианиста, играющего на своём инструменте. Сложные операции производятся небольшим количеством нажатий клавиш
5
Модальное редактирование
- Предполагается (и почти всегда это так), что разработчики гораздо больше времени исследуют код и вносят небольшие правки. По этой причине у vim есть несколько режимов работы
- Normal - для перемещения по файлу и небольших правок
- Insert - для набора кода
- Replace - для замен в коде
- Visual - для выделения блоков кода
- Command line - для выполнения команд
6
Модальное редактирование
- Нажатия клавиш имеют различный смысл (и производят различные действия) в разных режимах
- Например,
x
в Insert - вставляет символ x
, в Normal - удаляет символ под курсором, в Visual - удалить выбранное
- По умолчанию, vim открывается в Normal
- Для перехода из любого режима в Normal надо нажать Esc, из него можно перейти в другие режимы:
i
- insert, R
- replace, v
- visual, V
- line visual, Ctrl+v
- block visual, :
- command
- Esc, вероятно, самая часто используемая клавиша в vim. По этой причине многие переназначают Caps Lock на Esc
7
Основы редактирования
- Для написания кода нужно перейти в Insert и набирать код :)
- Для выполнения команд нужно перейти в Command и набрать команду
:q
- выйти из vim
:w
- сохранить изменения на диск
:wq
- сохранить и выйти
:e <filename>
- открыть файл
:ls
- показать открытые буфферы
:help <topic>
- помощь по команде
8
Vim как язык программирования
- Одна из основных идей vim заключается в том, что его интерфейс - сам по себе язык программирования
- Клавиши (с мнемоническими именами) могут объединяться в более сложные комбинации, что позволяет в несколько нажатий производить сложные операции
- Базовое перемещение
hjkl
(но можно и стрелками). Более сложные:
- w (next word), b (beginning of word), e (end of word)
- 0 (beginning of line), ^ (first non-blank character), $ (end of line)
- H (top of screen), M (middle of screen), L (bottom of screen)
- Ctrl-u (up), Ctrl-d (down)
- gg (beginning of file), G (end of file)
- :{number} or {number}G (line {number})
9
Vim как язык программирования
-
- % (corresponding item)
- f{character}, t{character}, F{character}, T{character} - find/to forward/backward {character} on the current line; , / ; for navigating matches
- /{regex}, n / N
10
Редактирование
- i - Insert
- o / O - insert line below / above
- d{motion} - delete {motion}
- c{motion} - change {motion} (d{motion} + i)
- x - delete character
- s - substitute character
- u - undo, - redo
- y - copy / “yank”
- p - paste
- ~ - flips the case of a character
11
Количество повторений и модификаторы
- 3w - move 3 words forward
- 5j - move 5 lines down
- 7dw - delete 7 words
- ci( - change the contents inside the current pair of parentheses
- da' - delete a single-quoted string, including the surrounding single quotes
12
Кастомизация
- Конфигурация для vim находится в файле
~/.vimrc
- Документированный пример конфигурации
- Пример моей конфигурации
- Плагины можно установить в директорию
~/.vim/pack/vendor/start/
(например, через git clone
)
- Пример плагина
- В интернете можно найти большое количество плагинов и продвинутых команд, все зависит только от вашего желания
- Из vim можно сделать даже (плюс-минус) полноценную IDE, с поиском по коду, автодополнением, дебаггингом, ...
13
Thank you
Use the left and right arrow keys or click the left and right
edges of the page to navigate between slides.
(Press 'H' or navigate to hide this message.)