Как пользоваться текстовым редактором vim
Содержание:
- How to Learn How to Use Vim Properly
- Плагины
- ? VSCodeVim tricks!
- Модальное редактирование
- Usage
- Как использовать FTP через VIM?
- Level 2 — Confidence
- How to Run Vim in PowerShell
- ? F.A.Q.
- Установите текстовый редактор Vim в Windows
- Командный и визуальный режимы Vim
- Использование Vim в качестве Python IDE
- Level 3 — Mastering
- Учим Vim понимать структуру кода
- Блиц раздел
- Командный режим
- Версия редактора Vim для Windows
How to Learn How to Use Vim Properly
Vim is a powerful code editor, and it will take you a lot of practice to get comfortable with it.
Here are a few Vim tutorials that will really help you quickly grasp the basics and get your fingers flying in no time.
For starters, one way Vim is different from other code editors is that Vim has «modes». Here are all of Vim’s modes explained, with examples.
Vim can be intimidating. There is so much to learn. But this guide will show you how not to be afraid of Vim anymore.
If you’re already using VS Code and want to switch completely to Vim, this article will explain how you can do so.
And here are 7 Vim Tips That Changed #100DaysOfCode founder Alex Kallaway’s life. In this article, he not only explain these, but shows demos of these tips in action.
Плагины
Плагины могут помочь повысить эффективность вашей работы в Vim. Они могут менять интерфейс Vim, добавлять новые команды, поддержку завершения кода, интеграцию других программ и утилит с Vim, поддержку дополнительных языков и многое другое.
Совет: For a list of popular plugins, see Vim Awesome)
Установка
Используя встроенную систему управления пакетами
В Vim 8 добавлена возможность загрузки сторонних плагинов. Чтобы использовать эту функциональность, переместите плагины в .
Используя менеджер плагинов
Менеджер плагинов позволяет устанавливать плагины и управлять ими одинаковым образом независимо от того, на какой системе вы запускаете Vim. Он представляет собой специальный плагин, который выполняет роль пакетного менеджера для других плагинов.
Из репозиториев Arch
Группа объединяет множество разнообразных плагинов. Используйте команду для отображения списка пакетов, которые вы можете затем , используя pacman.
cscope
Установите пакет .
Скопируйте стандартный файл cscope, который Vim будет автоматически читать:
Примечание: Вам наверное понадобится откомментировать следующие строки в , чтобы включить горячие клавиши cscope в Vim 7.x:
set timeoutlen=4000 set ttimeout
Создайте файл, который содержит список файлов для индексации (cscope может обрабатывать множество языков, но для примера мы возьмем файлы на Си/Си++ с расширениями .c, .cpp и .h):
cd /путь/к/каталогу/проекта find . -type f -print | grep -E '\.(c(pp)?|h)$' > cscope.files
Создание файлы базы данных, которые cscope будет читать:
cscope -bq
Примечание: cscope ищет файл в рабочем каталоге, поэтому тот же каталог следует использовать и для навигации по проекту в Vim. Также, вы можете указать путь до этого файла явно, установив его в переменной окружения .
Горячие клавиши по умолчанию:
Ctrl-\ и c: найти функции вызывающие эту функцию d: найти функции вызываемые этой функцией e: найти egrep паттерн f: найти этот файл g: найти это определение i: найти файлы, включающие этот файл (#include) s: найти этот символ Си t: найти присвоения
Не стесняйтесь изменять горячие клавиши:
#Maps ctrl-c to find functions calling the function nnoremap <C-c> :cs find c <C-R>=expand("<cword>")<CR><CR>
Установите пакет AUR.
Полезные опции можно записать в :
let Tlist_Compact_Format = 1 let Tlist_GainFocus_On_ToggleOpen = 1 let Tlist_Close_On_Select = 1 nnoremap <C-l> :TlistToggle<CR>
? VSCodeVim tricks!
VS Code has a lot of nifty tricks and we try to preserve some of them:
- — jump to definition.
- — on a visual selection reflow and wordwrap blocks of text, preserving commenting style. Great for formatting documentation comments.
- — adds another cursor on the next word it finds which is the same as the word under the cursor.
- — visual mode command which selects increasingly large blocks of text. For example, if you had «blah (foo )» then it would select ‘baz’ first. If you pressed again, it’d then select , and if you did it a third time it would select «(foo )».
- — equivalent to hovering your mouse over wherever the cursor is. Handy for seeing types and error messages without reaching for the mouse!
Модальное редактирование
Главное отличие Vim от большинства других редакторов состоит в том, что vim является «модальным» редактором. В редакторах такого типа специальные функции редактирования, такие как копирование текста, выполняются путем удерживания одной или нескольких клавиш-модификаторов и затем нажатия обычной клавиши. Vim использует различные режимы, чтобы отличать эти функции от обычного ввода текста.
Обычный режим
Используется для редактирования операций. Копирование, вставка, перемещение, удаление и изменение текста осуществляются в этом режиме.
Vim выполняет редактирование в «обычном» режиме. В данном режиме редактор находится при запуске. Этот режим используется для быстрого перемещения и редактирования текстового документа. Он не используется для ввода текста.
– чтобы перейти в обычный режим, нажмите клавишу «escape».
Режим вставки
Используется для ввода текста. Данный режим можно установить несколькими способами.
Чтобы ввести текст, vim нужно перевести в режим вставки. Этот режим является аналогом интерфейса ввода, который используется большинством других программ ввода текста. Набранный в документе текст выводится на экран. Все обычные клавиши создают соответствующий символ в текущей позиции курсора.
- i – устанавливает режим вставки в текущей позиции курсора;
- а – устанавливает режим вставки после текущей позиции курсора;
- I – устанавливает режим вставки в начале текущей строки;
- А – устанавливает режим вставки в конце текущей строки.
Визуальный режим
Используется для визуального выделения. Многие команды, доступные в обычном режиме, можно применить к конкретной выделенной части текста.
Третий режим, который использует Vim, называется визуальным. Участки текста выделяются как цель для команд редактирования или форматирования.
- v – устанавливает обычный визуальный режим. Выбор осуществляется путем перемещения курсора вверх, вниз, влево и вправо.
- V – устанавливает режим визуальной строки. Выбираются целые строки, от первого до последнего символа, путем перемещения вверх и вниз.
- ctrl]-v – Переход в режим визуального блока. Блок для выбора можно расширить и сузить. С помощью этого метода можно выбрать отдельные части нескольких строк.
Командный режим
Используется для выполнения команд. Для активации этого режима используется двоеточие.
Дополнительный режим, который необходим для сложного редактирования, изменения настроек и для управления vim, называется командным. Данный режим используется для сохранения документов, завершения работы программ, выполнения сложного поиска, и т.п.
: – переход в командный режим.
Usage
Command (Split windows)
Open fern on a current working directory by:
:Fern .
Or open fern on a parent directory of a current buffer by:
:Fern %:h
Or open fern on a current working directory with a current buffer focused by:
:Fern . -reveal=%
The following options are available for fern viewer.
Option | Default | Description |
---|---|---|
An opener to open the buffer. See for detail. | ||
Recursively expand branches and focus the node. See for detail. | ||
Stay focus on the window where the command has called. | ||
Wait synchronously until the fern viewer become ready. |
Command (Project drawer)
:Fern . -drawer
A fern window with project drawer style always appeared to the most left side of Vim and behaviors of some mappings/actions are slightly modified (e.g. a buffer in the next window will be used as an anchor buffer in a project drawer style to open a new buffer.)
Note that addtional to the all options available for split windows style, project drawer style enables the follwoing options:
Option | Default | Description |
---|---|---|
The width of the project drawer window | ||
Disable to quit Vim when there is only one project drawer buffer | ||
Close existing project drawer rather than focus |
Actions
To execute actions, hit on a fern buffer and input an action to perform.
To see all actions available, hit or execute action then all available actions will be listed.
Window selector
The action open a prompt to visually select window to open a node.
This feature is strongly inspired by t9md/vim-choosewin.
Renamer action (A.k.a exrename)
The action open a new buffer with path of selected nodes.
Users can edit that buffer and applies the changes.
This feature is strongly inspired by shougo/vimfiler.vim.
Как использовать FTP через VIM?
Согласно руководству, поддержку Vim FTP можно организовать следующим образом. В режиме ввода команд (задействуется автоматически при открытии редактора) нужно набрать следующее:
:e ftp://@/file
После открытия можно модифицировать и сохранить указанный файл. Но если в вашем случае этот способ не работает, тогда нужно соблюсти пару правил:
- Не забудьте создать временный каталог C:\Temp, или C:\TMP, или каталог согласно пути, который прописан в настройках программы. Windows Vim нуждается в нем для хранения временных файлов.
- При открытии файла по FTP, убедитесь, что вы прописали двойной слеш в подобном случае:
:e ftp://@//catalog1//catalog2/file
Например, я попытался открыть файл
ftp://@/file
и это сработало.
Но когда я попытался открыть
ftp://@/catalog1/file
программа выдала ошибку!
И в варианте написания
ftp://@//catalog1/file
файл снова получилось открыть.
Немного непривычные требования, но меня этот способ устраивает.
:e ftp//@/robots.txt
После создания файл сценария можно запустить в редакторе. После запуска сценария и ввода пароля для FTP, можно будет редактировать файл «robots.txt». Вот и все, надеюсь вам будет полезна моя статья!
Level 2 — Confidence
Ok, you decided to learn VIM and this is awesome. Let’s make sure you are doing it right. Your fingers got used to navigation and you also know how to change modes from one to another. If it is true, so you are ready.
Getting insert mode
You know you can enter this mode by pressing on a keyboard. Let’s think that stands for insert as insert text before the cursor. You can also press which stands for append as append text after the cursor. It is easy to intensify these commands by changing the case, so the result would be the following: inserts text before the first non-blank in the line and appends text at the end of the current line.
To make your future work more pleasant you have to know command which appends a new blank line after the current and which does the same but before the current line.
These are the most often used insert mode-switching commands in VIM. If you adjust to navigation it will take a couple of days to get used to these commands. The more you sweat in training, the less you bleed in war.
Normal mode
Before we start to learn VIM language we should also improve our navigation skills. In this question command (stands for find) will help us. This command is used to navigate within the current line. You type and a letter to which you want to move the cursor. moves the cursor from the current position to the first occurrence of letter P. You can power up this command to which does the same but changes the search direction.
VIM language
Now it is the time to become a crazy geek. You should «speak» with VIM in the normal mode. Firstly, let’s consider some constructions of VIM language:
Nouns: — word — sentence — paragraph — (block/parentheses) — tag, , , , , — braces, — quotes
Verbs:
- — visualize
- — change (delete text and switch VIM into insert mode)
- — delete and copy (delete text and does not change VIM mode)
- — yank (means copy)
Adverbs:
- — inside
- — around
- — till
- — till (inclusive)
Pay attention that these commands may work by itself not as you expect. Moreover, when you create a VIM sentence, it should be sufficient and all constructions should be on their place, otherwise, you will get another result. Now let’s create some easy VIM sentences as an example:
- — change inside word — deletes the whole word under cursor and switches to insert mode, unlike which deletes a word from cursor to the end of this word.
- — change inside sentence.
- — change inside » brace — deletes all text between » braces.
- — delete around } brace — deletes all text inside curly braces including them.
- — visual inside paragraph — selects all paragraph.
- — change till p — delete everything from here to the letter p.
To expand your VIM language right now I suggest you learn new VIM construction — number modifier. Let’s consider the following code:
And you want to remove all code inside {} of function. Using number modifier it is easy to do. Just type — change inside curly braces 2 times.
Number modifier works not only in sentences but it works almost everywhere:
- — moves the cursor down 5 times.
- — moves the cursor to the second occurrence of litter k in the line.
- — insert 2 times.
Be persistent
As you learn VIM you will find some new language constructions and expand your VIM language. Day by day it would be easier to «speak» with VIM. All the commands and language constructions are tightly coupled and created to maximize your performance, and it is proved by more than 20 years of VIM existence.
How to Run Vim in PowerShell
Then, once you’ve installed Vim, you should be able to launch it from your Windows command prompt.
Note that as of 2020, PowerShell has all of the same functionality as CMD, plus a whole lot more. I recommend using PowerShell for everything.
You can open PowerShell from the Windows menu bar by typing «powershell» in the search field on the start bar.
Windows will open PowerShell, and you’ll get a command prompt that looks something like this:
A screenshot of the Windows PowerShell prompt.
Once you’re in PowerShell, here’s how to run Vim itself. All you have to do is type «vim» and press enter. This will open up Vim. Once Vim is open, this is what you should see:
A screenshot of Vim when you open it for the first time.
Congratulations – you now have Vim installed.
? F.A.Q.
-
None of the native Visual Studio Code (e.g. , ) commands work
Set the to .
-
Moving / over folds opens up the folds
Try setting to . This is a hack; it works fine, but there are side effects (see issue#22276).
-
Key repeat doesn’t work
Are you on a Mac? Did you go through our instructions?
-
There are annoying intellisense/notifications/popups that I can’t close with ! Or I’m in a snippet and I want to close intellisense
Press to close all of those boxes.
-
How can I use the commandline when in Zen mode or when the status bar is disabled?
This extension exposes a remappable command to show a VS Code style quick-pick version of the commandline, with more limited functionality. This can be remapped as follows in VS Code’s keybindings.json settings file.
{ "key": "shift+;", "command": "vim.showQuickpickCmdLine", "when": "editorTextFocus && vim.mode != 'Insert'" }
Or for Zen mode only:
{ "key": "shift+;", "command": "vim.showQuickpickCmdLine", "when": "inZenMode && vim.mode != 'Insert'" }
-
How can I move the cursor by each display line with word wrapping?
{ "key": "up", "command": "cursorUp", "when": "editorTextFocus && vim.active && !inDebugRepl && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible" }, { "key": "down", "command": "cursorDown", "when": "editorTextFocus && vim.active && !inDebugRepl && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible" }, { "key": "k", "command": "cursorUp", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode == 'Normal' && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible" }, { "key": "j", "command": "cursorDown", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode == 'Normal' && !suggestWidgetMultipleSuggestions && !suggestWidgetVisible" }
Caveats: This solution restores the default VS Code behavior for the j and k keys, so motions like . If you need these motions to work, .
-
I’ve swapped Escape and Caps Lock with setxkbmap and VSCodeVim isn’t respecting the swap
This is a known issue in VS Code, as a workaround you can set and restart VS Code.
Установите текстовый редактор Vim в Windows
Большинство потенциальных разработчиков боятся использовать Vim, даже я. Но как только вы привыкнете к этому, вы поймете, что лучше владеете клавиатурой и языком программирования. Хотя Vim был представлен как текстовый редактор Vi в системах UNIX, существует обходной путь для его установки и в Windows.
Для всех тех, кто плохо знаком с Vi / Vim, я должен сказать, что это один из самых старых и стабильных текстовых редакторов. Он работает в окне терминала и обладает мощными функциями, такими как многоуровневое дерево отмены, расширенная система плагинов и интеграция со многими другими инструментами. Если вы были / являетесь пользователем Linux и хотите установить Vi / Vim на Windows, вы находитесь в правильном месте.
Шаг 1: Вы должны скачать Windows Install Vim Text Editor, чтобы начать. Нажмите на эту ссылку и загрузите программу установки для Windows.
Шаг 2Откройте файл установки и следуйте инструкциям на экране. На этапе, когда программа установки запрашивает тип установки, выберите В полностью
и нажмите «Далее».
Шаг 3: После завершения установки откройте окно CMD и введите напор и нажмите Enter. Теперь вы находитесь в текстовом редакторе Vim. Ввод чего-либо не будет работать, потому что использовать Vim не так просто, как есть.
Изучение Vim
Один из лучших способов изучить Vim — это просмотреть официальную документацию. Эта ссылка приведет вас к документации, которая приведет вас к лучшим источникам обучения vim. Если вы ищете что-то быстрее, просто введите :Помогите в напор окно, и вы можете пройти через встроенные инструкции.
Это может показаться ненужным, но правильный выход из vim — это войти :q и не нажимайте кнопку закрытия окна.
Если вы уже использовали Vim Text Editor в системах UNIX, вы должны почувствовать то же самое. Все элементы управления должны работать, как есть, и не так много разных вещей. Если вы хотите настроить Vi / Vim под Windows, вы должны отредактировать файл конфигурации.
Под UNIX файл конфигурации называется .vimrcпод виндой _vimrc.
Файл конфигурации может находиться в вашей папке $ VIM, которая является ничем иным, как C: Программы (x86) Vim_vimrc.
Вы можете редактировать этот файл, если хотите добавить пользовательскую конфигурацию.
Это означало установку и запуск Vim на Windows. Вы также можете запустить Vim прямо из меню «Пуск». Редактор также связывается с текстовыми файлами, так что вы можете выбрать его в качестве программы по умолчанию для открытия текстовых файлов. Эта установка Vim также поставляется с gVim, который представляет собой не что иное, как Vim с графическим интерфейсом. Вы можете использовать gVim, если вы не знакомы с Vim. gVim может быть настроен отдельно и работает не так, как Vim.
Только записи, принадлежащие администратору, могут выполнять шорткод include me
Связанные видео
Командный и визуальный режимы Vim
Называя приведенные в предыдущем разделе комбинации клавиш командами, я нарочно отошел от стандартной терминологии Vim, чтобы как можно более четко объяснить, как это все работает. На самом деле в Вим есть отдельный командный режим, больше похожий на классическую командную строку, и он позволяет делать еще более продвинутые вещи.
Командный режим доступен по вводу символа : в обычном режиме. Он предназначен для построчного редактирования текста с помощью сложных команд, которые могут включать в себя регулярные выражения и даже запуск команд самой операционный системы.
Одна из самых известных команд данного режима — :s. Она предназначена для поиска и замены слов. С ее помощью второй пример из предыдущего раздела можно было бы решить так:
Такая команда заменит первое встреченное в текущей строке слово Windows на Linux. Чтобы заменить все слова Windows на Linux в текущей строке можно использовать модификатор g:
А вместо искомого слова использовать регулярное выражение:
Операцию замены можно расширить на весь файл указав перед командой знак процента:
А можно натравить ее только на нужный диапазон строк:
Или на текст между двумя метками:
Удобнее всего использовать командный режим сочетании с визуальным. Последний представляет собой режим выделения, которого не было в редакторе Vi. Работает он так: вы переходите на строку, с которой хотите начать выделение текста, затем нажимаешь v (или Shift+V для построчного выбора) и выделяете текст с помощью любых стандартных команд перемещения (например, } чтобы выделить текущий абзац). Затем вы можете либо выполнить команду редактирования (например, d, чтобы удалить выделенный текст), либо перейти в командный режим и выполнить над ним более сложную операцию.
Визуальный режим Vim
Вторая из наиболее часто используемых команд — :g. Это встроенный grep, с помощью которого можно искать строки и выполнять над ними действия. Например, следующая команда удалит все строки, содержащие Windows во всем файле:
А такая команда удалит все пустые строки (содержащие только пробелы):
Следующая команда удалит пустые строки (не содержащие ни одного символа) в HTML-таблице:
/,/
/g/^$/d
Строки можно перемещать, например, чтобы переместить все строки, содержащие «Windows», в конец файла, набирай:
Это далеко не все, что может делать встроенный grep. Однако если мы будем вдаваться в подробности, они не влезут ни в какую статью. Вместо этого посмотрим, что еще умеет командная строка Vim.
С ее помощью удобно вставлять в текст содержимое других файлов или вывод команд Unix. Например, так можно вставить в текст содержимое файла todo.txt:
Команда :r поддерживает автодополнение, поэтому вбивать полный путь не придется.
Если добавить к r восклицательный знак — она вставит в текст вывод указанной команды:
Когда ты пишешь статью в «Хакер» с кучей цитат из вывода команд, такая функция становится просто незаменимой.
Vim позволяет не только читать вывод команд Unix, но и отправлять текст им на вход. Например, следующая команда отсортирует строки с 1 по 10 с помощью sort:
Отсортировать весь файл:
Прогнать файл через форматтер fmt:
Конечно же, все это работает в том числе в визуальном режиме.
Использование Vim в качестве Python IDE
Когда освоите Vim в качестве редактора,
можно попробовать улучшить продуктивность
написания в нем кода на Python при помощи
дополнительных опций конфигурации и
плагинов. Вот несколько ресурсов, которые
помогут вам сделать этот шаг:
- VIM and Python — a Match Made in Heaven. Статья подробно рассказывает о том, как настроить мощную среду VIM, чтобы днями напролет создавать в ней код на Python.
- Проект python-mode это плагин для Vim, обеспечивающий подсветку синтаксиса, брейкпоинты, PEP8-линтинг (PEP8 — соглашение о стиле написания кода в Python), автодополнение кода и многие другие функции, которые вы ожидаете найти в интегрированной среде разработки.
- В статье Vim as Your IDE поясняется, как настроить Vim для достижения большей продуктивности. Имеет смысл читать, когда вы уже освоили язык команд и научились пользоваться этим редактором.
- Setting up Vim for Python. Советы по использованию Vim от пользователей Stack Overflow.
- Если вы пишете в Vim документацию в разметке Markdown, обязательно почитайте пост о соответствующей настройке редактора.
Level 3 — Mastering
You are on the way to become a VIM master. As you may found, this is not so easy to learn VIM. When you feel the power in your hands using VIM, you will want something more and this is what this part about. All topics are discovered superficially in order to let you decide what you want.
VIM is not an IDE
- Hardcore! Do not repeat this at home! Google Chrome also has extensions for VIM-like navigation. (find it in Chrome Store)
Still, you have to keep in mind that the maximum performance can be achieved by using just VIM. Basically, it is suitable for small js/html/css projects, editing configuration files or just as a replacement of your notepad++ 🙂
VIM plugins
In my case, I pressed key and to navigate to the appropriate line. It was the easiest example and as usual, in the world of VIM, you can craft almost any command according to your needs.
Mappings
This feature I decided to consider separately. You may think about mapping as key bindings for all modes. That is to say, you can bind some pattern to perform some actions in different modes.
So let’s look at the easy and real example. Almost every person who works in VIM does not change the mode from insert to normal by pressing . We are doing it by pressing or because we have the following mapping: <>. stands for insert mode mapping and means that it works only in insert mode.
VIM features
There are a lot of things to learn in VIM besides the features mentioned above. You definitely should pay attention to the following list:
- global commands
- search and replace
- macros and registers
- buffers
- tabs
- indents and foldings
- autocommands
They may exist in other development tools, but this is VIM. Day by day you will wonder how brilliant all these things are constructed. Check it out to make sure.
Учим Vim понимать структуру кода
Теперь научим Vim строить список классов и методов классов в отдельном буфере, чтобы мы могли быстро перемещаться на нужный участок кода.
Для этого, во-первых, нам понадобится маленькая программа под названием ctags. Скачать ctags под вашу операционку можно с официального сайта. Скачиваем нужный архив и устанавливаем ее куда нам удобно. Я, например, установил ее в c:\Program Files\ctags
Затем скачиваем плагин для Vim под названием taglist
Установка этого плагина состоит из нескольких этапов.
-
Распаковываем плагин таким образом, чтобы файл из папки plugin оказался в папке plugin у Vim, а, соответственно, файл из папки doc — в папке doc.
- Вы можете добавить путь до ctags в переменную окружения PATH, а можете добавить в файл _vimrc следующую строку:
let Tlist_Ctags_Cmd='»C:\Program Files\Ctags\ctags.exe»‘
Естественно, путь до ctags у васдолжен быть свой
Обратите внимание на вложенные двойные кавычки. Это нужно для того, чтобы Windows понял строку C:\Program Files\Ctags\ctags.exe как путь до программы ctags.exe, а не остановился на пробеле в имени папки.
-
Затем мы должны сделать так, чтобы при открытии Vim в качестве рабочей директории была бы папка doc. Так как мы уже сделали так, чтобы vim изменял рабочую директорию при открытии файла, то достаточно с помощью vim открыть любой файл в папке doc.
- Теперь вводим команду «:helptags .» Не забудьте про точку в конце. Немного подумав, плагин дополнит файл tags в папке doc.
Перезапускаем Vim и теперь можем открыть какой-нибудь исходник. Теперь вводим команду «:TlistToggle». И слева у нас открывается структура нашего исходника:
При двойном щелчке по строке из левого списка мы перескакиваем на соответствующий элемент исходника.
Если вам не хочется каждый раз набирать команду «:TlistToggle», то можно повесить выполнение ее какую-нибудь горячую клавишу, например, Ctrl-t. Для этого достаточно добавить следующие строки в файл _vimrc:
» Ctrl-T — открыть окно ctagsnmap <C-t> :TlistToggle<cr>imap <C-t> <esc>:TlistToggle<cr>i<right>
Теперь в нормальном режиме и режиме вставки вы можете открывать или прятать буфер со структурой исходника с помощью клавиши Ctrl-t.
Блиц раздел
Как и было обещано, мы рассмотрели некоторые важные аспекты рабочей среды, которые мы успешно (относительно) смогли связать с нашим любимым редактором. Насчёт других аспектов я с полной уверенностью говорить не могу, так как у меня с ними мало опыта, но на затравочку давайте пробежимся по некоторым интересным вещам:
Комментарии про отладку
Чуда не будет. Дебаггеры — это очень важные программы для отладки ваших проектов, так как позволяют отслеживать состояние системы во время исполнения вашего кода. Однако их интеграция в редакторы всегда была очень болезненной, так как они очень платформозависимы и неповоротливы.
Это не является минусом конкретно Vim, так как в том же Sublime Text дела обстоят не лучше. Хотя вам никто не мешает просто научиться ими пользоваться из консоли. Туториалов на эту тему полно, и сам процесс несложный.
Уход за проектом
В Виме есть встроенная команда , которая ведёт себя как одноимённая программа для терминала. Плюс этого подхода в том, что она вас носом проведёт по всем предупреждениям и ошибкам, указывая на то, что её беспокоит (это поведение настраивается).
Про настройку проверки синтаксиса и непосредственного написания кода уже написано много статей, но могу посоветовать установить для автодополнения по табу, отключить у него проверку синтаксиса и поставить для неё :
Прыжки по тегам
У Вима есть встроенная комбинация клавиш , который позволяет вам перейти к имплементации выделенного термина. Однако для его работы нужны те самые тэги. Сгенерировать их можно терминальной командой ctags:
Если вам нужно перейти к объявлению этого термина, то вам поможет (у вас должен быть установлен YCM):
Однако, постоянно отправлять Вим в задний фон и запускать ручками команду — не очень удобно. Также не очень удобно в больших проектах подолгу ждать выполнение индексации. Но у меня и для этой проблемы найдётся ответ…
Асинхронные команды
Одним из недавних трендов программирования является асинхронность. Она позволяет одновременно выполнять несколько разных задач, но сама программа остаётся однопоточной.
Вим — однопоточная программа (ему можно, у него амбиции ниже). Поэтому, если на него слишком много плагинов, то он поползёт со скоростью улитки. Но начиная с версии 8 (ну и в NeoVim это тоже есть) в него добавили API для асинхронных вызовов. Теперь ваш линтер, работающий в реальном времени, не будет замедлять сам процесс редактирования текста.
Давайте в качестве нашего подопечного возьмём плагин . Он умеет запускать асинхронно терминальные программы как в Vim 8, так и в NeoVim (ну и всех их разновидностях).
Теперь по нажатию клавиши F3 вы будете прогонять рекурсивно в директории проекта ctags. Вы всегда можете посмотреть вывод запущенной через программы в окне Quickfix. Умышленно убить программу в заднем фоне можно с помощью команды .
Соответственно, вызывать zathura можно также асинхронно:
Интеграция с Git
Человечеством ещё не было придумано более удобного способа пользоваться Git, чем через терминал. Многие IDE пытались бороться с такой тенденцией, но либо упрощали процесс настолько, что терялись важные фичи, либо усложняли до безумия. Но для фанатов делать всё из-под Вим таки нашёлся плагин , просто оборачивающий всеми любимые команды.
Однако, по аналогии с прошлым пунктом, можно пойти и дальше, добавив немного асинхронности. и умеют пользоваться сторонними реализациями , так что для нашей затеи вам понадобится лишь добавить эту строчку в свой конфиг:
Командный режим
Используется для продвинутого редактирования, изменения параметров и управления. В нем выполняется сохранение, выход из программы, продвинутый поиск и многое другое. Активируется клавишей двоеточия “:”.
Команды управления
Команды управления задаются вводом “:” перед каждой командой.
:q — выход из программы. Действие не будет выполнена, если не сохранить изменения:q! — выход из программы с отменой всех изменений, которые не были сохранены:w — сохранить изменения. При первичном сохранении или сохранении в другой файл укажите имя через пробел:e — редактировать указанный далее файл:bn — редактировать следующий файл (если открыто несколько файлов):bp — редактировать предыдущий файл (если открыто несколько файлов):qw – сохранить файл и выйти
Объединение команд
Как упоминалось выше, эффективность vim обусловлена возможностью строить цепочки разных действий. Лучше всего этот принцип иллюстрируется, если представлять команды vim в виде языка. Клавиши в нормальном режиме играют роль различных частей речи.
Например, для копирования 5 слов представьте эту фразу как команды, которые понимает vim. Это будет выглядеть так:
:y5w (y — копировать, 5 — количество, w — слов)
Удалить текст от текущей позиции до окончания файла:
:dG (d — удалить, G — переход в конец файла)
Также полезно усвоить ряд используемых в действиях vim принципов. Например, сдвоенный символ обычно распространяет действие команды на всю строку. Следующая команда скопирует не один символ, а строку целиком:
:yy
С другой стороны, соответствующая команде заглавная буква часто действует от положения курсора до окончания линии. В случае с изменением текста это будет следующая команда:
:C
Чтобы выполнить операцию с несколькими символами или строками, укажите перед командой число. Например, такая команда заменит весь текст от текущего положения курсора до окончания следующей строки:
:2C
Версия редактора Vim для Windows
Под Windows существует даже 2 версии этого редактора, обе из которых можно свободно скачать в сети. Первая — подразумевает работу с редактором в консольном режиме. Я не советую вам использовать эту версию, потому что работа с консольным текстовым редактором в cmd.exe (стандартный эмулятор терминала в OS Windows), это далеко не так удобно, как работа в bash (аналогичный эмулятор в OS Linux). Приверженцы MS Windows вспомнят о PowerShell, но в любом случае, я не советую вам работать с консольными программами в системах не оснащенных удобным интерфейсом командной строки.
Второе исполнение Vim для Windows — это программа работающая в стандартном оконном режиме. Все возможности Vim при этом сохраняются, многие функции доступны из панели инструментов, но далеко не все. Все функциональные возможности этого редактора не сможет вместить ни одна панель инструментов программ, работающих в графическом оконном режиме. Чтобы не искать сайт разработчика (я и сам его не помню) можете скачать эту версию редактора по моей прямой ссылке. Сама программа называется GVim (Gnome Vim), точно так же, как версия для DE Gnome в операционных системах Linux.
При работе с этой программой у меня возникла необходимость открывать и редактировать файлы, которые находятся на удаленном FTP-сервере. На этом сервере нет SSH или SFTP доступа. Вот пара рецептов для этого.