Skip to content

Latest commit

 

History

History
170 lines (129 loc) · 11.2 KB

1.3.2.1 TextEditors.md

File metadata and controls

170 lines (129 loc) · 11.2 KB

Text Editors

Ресурсы для чтения

Что выбрать?

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

Что популярно?

По опросу программистов со stackoverflow одни из самых популярных не IDE сред разработки — это Visual Studio Code, Notepad++, Vim, Sublime Text. Я расскажу про последние два, остальные очень похожи по философии с кем-то из этих двух. Забавно, что Emacs всё меньше и меньше пользуется популярностью.

Я выбрал Vim

Vim в качестве редактора удобен особенно когда хочется работать с кодом удалённо или нельзя сохранить код локально. У Vim богатая история: он был последователем редактора Vi (1976) (откуда и название Vi iMproved), и его разработка продолжается до сих пор. У Vim есть несколько действительно крутых идей, и по этой причине многие инструменты поддерживают плагины Vim (например, 1,4 миллиона человек установили плагин Vim для VSC). Vim, вероятно, стоит изучить, даже если Вы перейдете на какой-нибудь другой текстовый редактор.

Философия Vim

Когда Вы программируйте, скорее всего Вы больше читаете и редактируете код, чем пишете с нуля. Поэтому Vim это модальный редактор и есть различные моды, например, редактирование и написание кода отличаются по своей логике.

Vim — это отдельный язык программирования, где Вы задаёте команды, комбинируйте их в "скрипты", которые автоматически исполняются. Большинство команд однобуквенные, чтобы сэкономить время для их написания, но их комбинации порой поражают. Vim не любит движения мышкой, потому что это медленно. Да Vim даже не любит использовать стрелки, потому что они находятся далеко от обычных текстовых клавиш клавиатуры.

Есть сайт VimGolf, где люди соревнуются по тому, какое минимальное количество команд надо для выполнения того или иного действия, некоторые результаты там просто поражают своей красотой, элегантностью и эффективностью, всё как в настоящих языках программирования.

Буферы, вкладки и окна

Vim поддерживает набор открытых файлов, называемых "буферами". Vim сессия имеет несколько вкладок, каждая из которых имеет несколько окон (разделенных панелей). Каждое окно показывает единственный буфер. В отличие от других программ, с которыми Вы знакомы, таких как веб-браузеры, между буферами и окнами не существует однозначного соответствия. Буфер может быть открыт в нескольких окнах, даже в пределах одной вкладки. Это может быть очень удобно, например, для одновременного просмотра двух разных частей файла.

По умолчанию Vim открывается с одной вкладкой, содержащей одно окно.

Как выйти из Vim?

В vim есть мод Cmd, в котором Вы пишете команды для самих окон, панелей и вкладок. Чтобы войти в мод, надо написать :. Самые популярные из них:

  • :q выйти (закрыть ровно одно окно), чтобы закрыть всё — :qa, выйти без сохранения — :q!
  • :w сохранить ("write")
  • :wq сохранить и выйти, также часто используют :x
  • :e открыть файл в новом окне
  • :ls открыть все буферы (файлы)
  • :help {topic} открыть help
  • :help :w открыть help для команды :w
  • :help w открыть help для команды просто w

Изменения

Все, что Вы раньше делали с помощью мыши, теперь должны делать с помощью клавиатуры, используя команды редактирования, которые объединяются с командами движения. Интерфейс Vim уже начинает выглядеть как язык программирования, правда? Команды редактирования Vim также называются "глаголами" (verbs), потому что глаголы действуют на существительные.

  • i — вход в режим Insert
    • но для управления / удаления текста нужно использовать что-то большее, чем backspace
  • o / O вставить строку ниже / выше
  • d{движение} удалить {движение}
    • например dw — слово удаления, d$ — удаление до конца строки, d0 — удаление до начала строки
  • c{движение} изменить {движение}
  • например cw - изменить слово
    • как d{движение}, за которым следует i
  • x удалить символ (равно dl)
  • s замещающий символ (равно xi)
  • Визуальный режим + манипуляция
    • выделите текст, d, чтобы удалить его, или c, чтобы изменить
  • ! u, чтобы отменить, Ctrl+r, чтобы повторить
    • y для копирования (некоторые другие команды, такие как d, также копируют)
    • p вставить после курсора, P до курсора
  • Еще многое предстоит узнать: например, ~ переворачивает регистр символа
  • ! Удалить строку - Ctrl-u/Ctrl-w

Например, чтобы поменять строку с нижней, стоит написать ddp.

Счётчики

Также перед многими "глаголами" можно писать числа, например:

  • 3dw — удалить 3 слова
  • 3w — переместиться на 3 слова
  • 10j — переместить курсов на 10 строки вниз
  • 2u — 2 undo

Модификаторы

Также есть модификаторы, i inside, a around, например:

  • ci[ — поменять контент внутри квадратных скобок
  • da' — удалить всё внутри одинарной кавычки и её саму

Поиск и замена

:s, а дальше всё как в sed с некоторыми особенностями:

  • :.,+2s/a/b/g — заменить всё от текущей строки на +2 ниже
  • :10,15s/a/b/gс — заменить всё на строках 10-15 и спросить confirmation для каждого.
  • :%s/abc/abcd/gci — заменить везде с подтверждением и не обращать внимание на регистр: опция i

Сплит панелей

Так как vim — это всегда про discoverability, нежели про написание кода, то здесь можно работать с панелями, которые можно открывать:

  • :sp — горизонтальный split панелей того же файла, если есть аргумент, откроет другой файл
  • :vsp — вертикальный
  • Ctrl+w h/j/k/l — навигация по панелям
  • Ctrl+w +/- — увеличение или уменьшение панели на 1 строку, перед знаком может быть число
  • Ctrl+w </> — увеличение или уменьшение панели на вертикальные столбцы соответственно
  • Ctrl+w _ — установка высоты, число пишется через
  • Ctrl+w | — установка ширины, число пишется через
  • Ctrl+w = — подстроить все панели равномерно под ширину дисплея

Макросы

Это уже более продвинутая возможность, которая позволяет делать некоторые действия через набор команд. Почитайте о них здесь.

Кастомизация

Vim можно кастомизировать, для этого нужно скопировать конфиг вима и поместить его содержимое в ~/.vimrc.

Это ещё одна очень сильная точка для Vim. Очень много плагинов под разные языки, автодополнения, goto definition, pony plugins, code search, magic motions, и т.д.


1.3.1 Deep Dive In Terminal Theme | Back To iOSWiki Contents | 1.3.2.2 Vim Modes Theme