- 5 плагинов Vim, которые я считаю необходимыми
- 1. vim surround
- 2. vim commentary
- 3. emmet vim
- 4. coc.nvim
- 5. fzf
- Заключение
- Плагины для vim windows
- Vim : Плагины
- Введение
- Настройка с использованием vimrc
- Глобальные плагины
- Плагины Filetype
- Использование плагинов filetype
- Написание плагина filetype
- Подсветка синтаксиса
- Использование подсветки синтаксиса
- Написание темы подсветки синтаксиса
- Плагины компиляции
- Домашнее задание: написать глобальный плагин
- Отключение плагинов
- Итоги
5 плагинов Vim, которые я считаю необходимыми
Перевод статьи «The only 5 vim plugins i need».
Уже практически 18 месяцев прошло с тех пор, как я подсел на Vim. А недавно я решил, что пришло время выйти из зоны комфорта и перестать пользоваться готовыми настройками этого редактора, создав собственные.
Готовая конфигурация Vim настолько объемна, что половину функционала большинство людей даже не использует. Но оказалось, что можно довольно легко вытащить из нее то, чем действительно пользуешься, и поместить в собственный vimrc (конфигурационный файл).
В своей работе я использую довольно много плагинов Vim, но теми, о которых пойдет речь в этой статье, я пользуюсь чаще всего.
1. vim surround
Справка. Слово «surround» означает «окружать». С помощью плагина vim surround легко можно вставлять, менять и удалять парами скобки всех видов, кавычки, XML-теги и т. п.
Вы не найдете в Vim все, что вам нужно, прямо из коробки: многое придется добавлять по своему вкусу. И это одна из причин, почему мы его любим. Плагин vim surround очень облегчает редактирование кода.
Сколько раз вам случалось находиться в js-файле и осознавать, что вам очень не хватает интерполяции строк? Установив vim surround, можно заменить парные кавычки обратными, просто введя cs»` . Таким образом
Можно даже заменять HTML-теги. Например, при помощи команды cst
2. vim commentary
Справка. С помощью этого плагина можно легко закомментировать что-либо (строку, несколько строк, абзац и т. п.).
Хотите закомментировать 5 следующих строк в формате, подходящем для того файла, в котором находитесь? Легко:
Проблемы с комментированием у меня возникают только для typescript и react, но для них я дописал кое-что в своем vimrc-файле:
3. emmet vim
Когда мне не так давно пришлось уделить побольше времени фронтенду, я начал ценить emmet еще сильнее. Это один из тех плагинов, которые непременно нужно иметь в своем редакторе.
вы получите целый блок кода:
4. coc.nvim
Справка. Это движок Intellisense для Vim8 и Neovim. Плагин предоставляет автодополнение кода и поддержку LSP, как в VSCode.
Да, самое лучшее я приберег напоследок. Этот плагин обеспечит вам автодополнение кода практически на любом языке.
— и вы готовы работать с JavaScript, причем у вас будет самое лучшее автодополнение из тех, с которыми вам приходилось работать.
Здесь есть LSP даже для TailwindCSS, с которым мне недавно пришлось работать. Теперь, забыв имя класса, больше не придется каждый раз заходить на сайт!
5. fzf
Справка. Этот плагин обеспечивает нечеткий поиск при помощи командной строки.
Если вы еще не пробовали fzf — обязательно попробуйте. Я пользовался этим функционалом для поиска фалов в проекте, разработанном больше 10 лет назад, и мне удавалось находить нужное практически молниеносно.
Для облегчения доступа я добавил несколько сочетаний клавиш:
После этого все готово для гладкой работы. У вас даже будет окно предварительного просмотра, а это круто!
Заключение
Когда вы садитесь и пишете собственный vimrc, выбирая все самое любимое из разных репозиториев и настраивая все по своему вкусу, это определенно занимает какое-то время. Но результат просто бесценен! Очень рекомендую попробовать.
Плагины для vim windows
Библиотека сайта rus-linux.net
Vim : Плагины
Введение
В предыдущей главе мы рассмотрели написание скриптов, расширяющих существующую функциональность Vim. Мы вызываем эти скрипты, которые расширяют и добавляют функции, как «плагины».
Существуют различные виды плагинов:
• плагины подсветки синтаксиса
Вы можете не только написать свой плагин, но и скачать и использовать плагины , написанные другими.
Настройка с использованием vimrc
Когда я устанавливаю новый дистрибутив Linux или переустанавливаю Windows, первое, что я делаю после установки Vim, — восстанавливаю мой последний vimrc файл из архивной копии, и потом запускаю Vim. Почему это важно? Поскольку мой vimrc файл содержит переменные настройки/установки, я люблю подстраивать Vim под себя и собственного удобства.
Вы можете создать два файла для настроек Vim на свой вкус:
1. vimrc — для основных настроек
2. gvimrc — для специфических GUI настроек
Эти файлы хранятся в:
• %HOME%/_vimrc и %HOME%/_gvimrc в Windows
• $HOME/.vimrc и $HOME/.gvimrc на Linux/BSD/Mac OS X
Смотри :help vimrc о точном их местонахождении в вашей системе.
Файлы vimrc и gvimrc могут содержать любые команды Vim. В определениях следует использовать только простые установки в файлах vimrc, и расширенные опции из плагинов.
Например, вот содержание моего файла vimrc:
Обратите внимание, что в командах отсутствует префикс в виде двоеточия. Двоеточие не является обязательным при написании скриптов в файлах, поскольку двоеточие предполагает использование команд в нормальном режиме.
Если вы хотите детально изучить использование каждого параметра, изучайте :help.
Часть моего файла gvimrc:
Существуют различные примеры файлов vimrc , вам обязательно нужно посмотреть их и узнать различные виды настроек, которые можно сделать, а затем выбрать из них те, что вам понравятся, и записать их в собственных vimrc.
Несколько хороших, которые я нашел в прошлом:
Известный факт, что персональный файл vimrc, как правило, отражает то, как долго человек использует Vim.
Глобальные плагины
Глобальные плагины используются для реализации глобальных/основных функций.
Глобальные плагины могут быть сохранены с двух местах:
1. $VIMRUNTIME/plugin/ стандартные плагины идущие с Vim при установке
2. Для установки ваших плагинов или плагинов, которые вы где то скачали, вы можете использовать ваш каталог плагинов:
• $HOME/.vim/plugin/ на Linux/BSD/Mac OS X
• %HOME%/vimfiles/plugin/ на Windows
• Смотрите :help runtimepath для детальной информации о вашем каталоге плагинов.
Давайте посмотрим, как использовать плагины.
Полезно иметь плагин highlight_current_line.vim от Ansuman Mohanty, из названия которого можно понять, что он делает. Скачайте highlight_current_line.vim последней версии и положите его в ваш каталог плагинов (как упоминалось выше).
Теперь перезапустите Vim и откройте любой файл. Обратите внимание, что текущая строка будет подсвечена по сравнению с другими строками в файле.
Но, что если вам это не понравилось? Просто удалите файл highlight_current_line.vim и перезапустите Vim.
Аналогично, вы можете установить ваши related.vim или capitalize.vim из главы Скрипты в ваш каталог плагинов, и это позволит нам избежать трудностей с использованием :source . В конечном счете, любой плагин Vim, который вы напишете, должен быть в вашем каталоге плагинов .vim/vimfiles .
Плагины Filetype
Плагины Filetype написаны для определенных типов файлов. Например, программы, написанные на языке C, могут иметь свой собственный стиль отступов, закладок, подсветки синтаксиса и показываемых событиях о ошибках. Эти плагины не общего назначения, они работают на определенных, специфических типах файлов.
Использование плагинов filetype
Давайте возьмем плагин filetype для XML. XML это декларативный язык, который использует теги для описание структуры самого документа. Например, если у вас есть текст, как этот:
Он может быть записан в XML так (формат ‘DocBook XML’):
Ashok Banker’s next book immediately following the Ramayana is said to be a novel tentatively titled «Iron Gods» scheduled to be published in 2007. A contemporary novel, it is an epic hard science fiction story about a war between the gods of different faiths. Weary of the constant infighting between religious sects and their deities, God (aka Allah, Yahweh, brahman, or whatever one chooses to call the Supreme Deity) wishes to destroy creation altogether.
A representation of prophets and holy warriors led by Ganesa, the elephant-headed Hindu deity, randomly picks a sample of mortals, five of whom are the main protagonists of the book—an American Catholic, an Indian Hindu, a Pakistani Muslim, a Japanese Buddhist, and a Japanese Shinto follower. The mortal sampling, called a ‘Palimpsest’ is ferried aboard a vast Dyson’s Sphere artifact termed The Jewel, which is built around the sun itself, contains retransplanted cities and landscapes brought from multiple parallel Earths and is the size of 12,000 Earths. It is also a spaceship travelling to the end of creation, where the Palimpsest is to present itself before God to plead clemency for all creation.
Meanwhile, it is upto the five protagonists, aided by Ganesa and a few concerned individuals, including Lucifer Morningstar, Ali Abu Tarab, King David and his son Solomon, and others, to bring about peace among the myriad warring faiths. The question is whether or not they can do so before the audience with God, and if they can do so peacefully—for pressure is mounting to wage one final War of Wars to end all war itself.
(Excerpt taken from http://en.wikipedia.org/w/index.php?title=Ashok_Banker&oldid=86219280 under the GNU Free Documentation License)
Обратите внимание, что структура документа в версии XML более четкая. Поэтому он прост для инструментов конвертирования XML в другие типы форматов, включая PDF и печатные версии. Плохо то, что людям писать на XML более трудно. А давайте посмотрим, как ftplugins может помочь пользователям Vim, которые пишут на XML.
1. Сначала скачаем xmledit ftplugin и положим его в ваш каталог
2. Добавьте следующую строку в ваш
autocmd BufNewFile,BufRead *.xml source
(Проверьте, что вы указали правильно каталог в вашей операционной системе)
Это включает плагин ftplugin xmledit на время открытия файла с расширением XML.
3. Откройте Vim и перейдите к редактированию файла с именем test.xml.
5. Теперь наберите завершающую > ,и смотрите как плагин xmledit ftplugin автоматически добавит завершающий тег для вас. Итак, ваш документ теперь выглядит так:
6. Теперь наберем другой > и посмотрим как тег расширяется и мы можем ввести еще теги. Документ должен выглядеть так:
7. Заметьте, что курсор также переместился на один отступ, так что вы можете писать документ в четко структурированном виде, чтобы отразить структуру документа.
8. Повторяйте процесс пока вы не напишете весть документ.
Обратите внимание, как плагин ftplugin для XML делает простым создание XML документов. Это как раз то, для чего предназначены плагины ftplugins.
Написание плагина filetype
Давайте напишем свой собственный ftplugin.
В нашем предыдущем примере использовался плагин xmledit.vim ftplugin и запись в формате XML, и мы видели, что мы должны вставлять стандартный заголовок в верхней части каждого файла DocBook XML (специфичный для формата, который мы использовали). Почему бы не сделать это автоматически в Vim, через использование ftplugin?
В xml ftplugin нужно заложить информацию, которая будет добавляться в начало нового XML-файла:
Итак, давайте создадим новый ftplugin, назовем его «xmlheader.vim» для работы только с событием ‘BufNewFile’. Добавьте следующее в ваш файле
autocmd BufNewFile *.xml source
А теперь, все что нам нужно сделать в xmlheader.vim , это создать первую и вторую строку в файле:
Теперь перезапустите Vim, убедитесь что файл ‘test.xml’ еще не существует, и запустите :e test.xml .
Вы можете видеть, что заголовок уже записан!
Подсветка синтаксиса
В предыдущем разделе мы создали файл DocBook XML. Было бы полезно, если бы в нем цветом была выделена структура XML-файла для правильных тегов DocBook, чтобы понимать, что мы пишем корректно. Оказывается, что это возможно, если мы просто запустим :set filetype=docbkxml . И тогда Vim использует файл синтаксиса, расположенный в $VIMRUNTIME/syntax/docbkxml.vim .
Файл синтаксиса определяет, как части файла зависят друг от друга. Например, файл синтаксиса для XML определяет, каким тегам какие цвета соответствуют в зависимости от имени, и тому подобное.
Использование подсветки синтаксиса
Давайте посмотрим файл синтаксиса в действии. Скачаем скрипт mkd.vim , который является файлом синтаксиса для Markdown . Markdown — это основной формат, в котором простой текст может быть записан так, что бы потом его можно было конвертировать в HTML.
1. Откройте новый файл в Vim с именем ‘test_markdown.txt’.
2. Запустите :set syntax=mkd
3. Наберите следующий текст в файле:
4. Обратите внимание, как различные части файла, например, заголовок и служебные слова, автоматически выделяются. Это должно, мы надеемся, помочь в создании файлов с синтаксисом Markdown.
Написание темы подсветки синтаксиса
Давайте посмотрим как написать собственный файл синтаксиса для текстового формата AmiFormat.
Подсветка синтаксиса основана на двух действиях: первое — это определение типа текстового формата искомого файла, и второе — это описание того, как его показывать.
Например, предположим, что мы хотим найти все вхождения b>any word для показа жирным шрифтом. Сперва, нам нужно сделать такой шаблон в нашем тексте и затем соединить имя этого шаблона с нужным типом показа:
:syntax match ourBold /.* /
:highlight default ourBold term=bold cterm=bold gui=bold
Первая строка говорит, что мы создаем новый тип синтаксиса на основании шаблона, с именем ‘ourBold’ и определяем шаблон на основе регулярных выражений.
Вторая строка говорит, что мы подсвечиваем синтаксис ‘ourBold’. Будет использована схема по умолчанию, она может быть изменена пользователем или можно использовать другие цветовые схемы. Мы можем определить представление ‘ourBold’ для трех различных типов дисплеев, в которых будет запускаться Vim: для черно-белых терминалов, цветных терминалов и GUI (графической версии).
Иногда мы хотим определить некоторые задачи в нашем тексте как пункт todo и мы обычно записываем это заглавными ‘TODO’, но что, если мы хотим делать это постоянно?
:syntax keyword ourTodo TODO FIXME XXX
:hi def link ourTodo Todo
Сперва мы определяем ключевое слово ‘ourTodo’, которое нужно подсвечивать, и соединим шаблон ‘ourTodo’ с уже существующей группой с названием ‘Todo’ в Vim. Таких, уже существующих групп, которые имеют предопределенные цветовые схемы, в Vim много. Лучше всего привязать наши синтаксические стили к существующим группам. Смотри :help group-name для списка доступных групп.
Далее, некоторые блоки кода в группе могут быть заключены в теги [code] .. [/code], как мы можем выделить их подсветкой?
:syn region amiCode excludenl start=/\[code\]/ end=/\[\/code\]/
:hi def link amiCode Identifier
Во-первых, мы указываем, что мы определяем область текста, начальным и конечным шаблоном (который очень прост в нашем случае), а затем связываем его с уже существующими классом «Identifier».
Аналогичным образом, мы можем обработать и определить другие части текста, определенного в описании формата AmiFormat , а окончательный сценарий может выглядеть следующим образом:
Теперь, когда скрипт уже работает, я должен загрузить его в раздел скриптов Vim , как я уже писал об этом! Теперь кто угодно может использовать скрипт подсветки синтаксиса AmiFormat в Vim.
Для изучения деталей о скриптах подсветки синтаксиса в Vim, прочитайте:
Примечяние: Если вы хотите, перерисовать экран в случае, если файл подсветки синтаксиса неправильно работает, нажмите Ctrl-L.
Примечяние: Возможно, вы уже догадались, что, когда мы предварительно задали filetype , Vim, в свою очередь, автоматически устанавливает подсветку синтаксиса для этого расширения.
Плагины компиляции
Плагины компиляции используются для компиляции программ, написанных на разных языках. Они полезны везде, где требуется преобразование из исходных текстов в другой формат, даже если вы пишете обычный текстовый файл в Markdown и хотите конвертировать текст в HTML с помощью программы преобразования.
Давайте изучим использование плагина компиляции для Python.
1. Скачаем скрипт compiler/python.vim и положим его в наш каталог
2. Вставим следующую строку в наш
autocmd BufNewFile,BufRead *.py compiler python
3. Перезапустим Vim, откроем файл Python, скажем test.py и введем следующую программу:
print ‘Hello World’
4. Запустите :make и вы увидите успешную компиляцию.
5. Давайте намеренно введем ошибку в программу, изменив написание ‘print’ в ‘pritn’:
pritn ‘Hello World’
Теперь запустим :make и обратим внимание, что Vim выдал ошибку и автоматически перевел курсор на строку с ошибкой!
6. Запустим :clist чтобы просмотреть полный список ошибок.
7. После исправления ошибки вы можете выполнить :cnext для перехода к следующей ошибке.
Если вы откроете скрипт compiler/python.vim , который мы скачали, вы можете увидеть, что он очень простой — тут только две определенные переменные, одна — это makeprg , которая определяет как сделать ‘make’ файл, т.е. как компилировать это, и вторая — это errorformat , которая определяет форму вывода ошибок компилятора.
Я написал плагин компилятор для Adobe Flex с использованием тех же двух переменных.
Смотри :help write-compiler-plugin и :help quickfix для подробной информации о том, как написать свой собственный плагин компиляции.
Домашнее задание: написать глобальный плагин
В целях закрепления полученных навыков создания плагинов выполните следующее упражнение:
Напишите плагин, который удаляет повторяющиеся и избыточные пустые строки в документе.
Вы можете использовать либо язык сценариев Vim, или любой другой язык, поддержка которого есть у вас в Vim.
Если вам нужно «вдохновение», см. этот совет Vim .
Вот еще одно упражнение:
Напишите скрипт, который выдает значение и похожие по смыслу слова для текущего слова под курсором.
Опять же, если вам нужно «вдохновение», см. мой плагин lookup.vim .
Отключение плагинов
Предположим, что вы сочтете действия плагина Vim странными, и у вас появиится подозрение, что причиной этого является скрипт. В таком случае вы можете задать в Vim избирательную инициализацию скриптов путем задания аргумента -u в командной строке.
Например, vim -u NONE запустит Vim без инициализации скриптов.
То есть, работает только Vim. Используйте vim -u — your-minimal-initialization.vim для выполнения только конкретных инициализаций. Эта опция полезна при отладке, если нужно выяснить, вызваны проблемы самим Vim или запуском плагина, и т.д.
Смотри :help -u и :help starting для детальной информации.
Итоги
Мы рассмотрели различные типы плагинов, доступные в Vim, как использовать такие плагины и как писать такие плагины. Теперь мы понимаем, как расширяется Vim, и как мы можем писать плагины для облегчения своей жизни.