Как выбрать редактор, и почему нужно выбрать neovim?
Содержание:
- Версия редактора Vim для Windows
- Давайте определимся с терминологией
- Quick Start
- Перемещаемся по документу
- Level 1 — Survive
- Level 3 — Mastering
- Открываем файл
- Try it with your browser
- Level 2 — Confidence
- Лирическое отступление
- 🤔 Зачем редактировать текст без мыши?
- Экранный режим
- What is New in the Vim Latest Version?
- How to download and install Vim for Windows 10 PC/laptop
- Top Features of Vim for Windows PC
- Что такое Vim
- Перемещение
- Дальше — больше
- Красота требует настройки
Версия редактора 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 доступа. Вот пара рецептов для этого.
Давайте определимся с терминологией
Vim (далее Вим) — это, как многие уже знают, текстовый редактор. Конечно, изменение вами написанного является очень важным занятием, которое является бутылочным горлышком в вашей производительности, но, к сожалению, не всё в этой жизни так просто, и вам (как пользователю) зачастую необходим и другой функционал.
Рабочая среда — это набор программ для разработки ПО. Например, он может содержать компилятор, интерактивную консоль, редактор раположения GUI элементов, дебаггер и прочее. Редактор — это лишь маленький кусочек этого пазла.
IDE — это вся рабочая среда, сосредоточенная в одном месте. Конечно, есть программы наподобии Emacs (далее Емакс), где вы сами вольны вставить в неё всё, что вам угодно при должном умении, однако чаще всего это уже готовый, собранный за вас пакет.
— Зачем мне нужен тогда Вим, если за меня всё сделает IDE?
Однако есть ещё один более весомый аргумент — производительность. В IDE часто имеется огромное количество функциональности, которым вы не пользуетесь, и фоновых процессов, которые сильно нагружают систему. Даже если ваш Макбук не орёт как истребитель от PyCharm или у вас не лагает скроллинг в Visual Studio (что невозможно, врунишки вы мои), а однопоточность Емакса не напоминает о первом Crysis или S.T.A.L.K.E.R., то всё равно встаёт вопрос энергопотребления и, как следствие, времени жизни батареи. Такое ПО в линукс сообществе характеризуют мемом термином «bloat».
— Почему Вим?
У меня уже есть статья про все прелести этой программы. Однако она была написана человеком под впечатлением от новой игрушки с уровнем интеллекта второкурсницы (догадайтесь почему), что вылилось в настолько критично малое количество в ней смысла, что на её месте образовалась чёрная дыра. Ну хоть смешные картинки удались…
Что же я могу сказать про него сейчас, по прошествии года активного использования?
- Он очень быстрый. Ввиду особенностей его рендера, Вим имеет намного меньшую задержку, чем другие редакторы. После него другие редакторы кажутся неотзывчивыми, я уже молчу про выше упомянутые IDE.
- Его использование подобно прохождению третьего Dark Souls после первой части. Сначала сложно и непривычно, так как игра стала быстрее, и нельзя зачизить многие сложные моменты с помощью RPG составляющей, но потом приходит осознание того, что игра оказуалилась, и почти все боссы одолеваются со второй попытки.
- Он практически не тратит ресурсы и запускается даже на хлебушке, что очень хорошо сказывается на батарее.
В принципе, ничего откровенно плохого в других редакторах нет, так что оставьте этот выбор на сугубо ваше личное усмотрение. Меня не покидает уверенность, что вы сможете найти аналогичную статью для вашей любимой программы. Хотя, будем откровенными, редакторы на electron еле-еле проходят по критерию энергоэффективности.
В этой статье мы приведём Вим в удобоваримое состояние для серьёзной работы, а также научим его дружить с некоторыми сторонними программами для разработки. Учтите, что я буду рассказывать только про то, с чем мне довелось столкнуться лично, и если у вас интересные предложения, то добро пожаловать в комментарии.
Quick Start
-
Introduction:
If you are using Windows, go directly to Windows setup. If you run into any issues, please consult the FAQ.
See Tips for some advanced configurations.Using non-POSIX shells, such as the popular Fish shell, requires additional setup. Please check the FAQ.
-
Set up Vundle:
-
Configure Plugins:
Put this at the top of your to use Vundle. Remove plugins you don’t need, they are for illustration purposes.
set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line
-
Install Plugins:
Launch and run
To install from command line:
-
(optional) For those using the fish shell: add to your
Перемещаемся по документу
Перемещения в Vi, часть 1
Находясь в командном режиме, вы можете использовать клавиши <h>,<j>,<k> и <l> для перемещения курсора влево, вниз, вверх и вправо соответственно. Если вы используете современную версию Vi, вы можете также с этой целью использовать клавиши со стрелками. Клавиши <h>,<j>,<k> и <l> предпочтительнее, так как освоившись с ними вы сможете перемещаться по файлу, не размахивая руками над клавиатурой. Для перемещения по текстовому файлу используйте следующие клавиши:
- j – перемещает курсор вниз;
- k – перемещает курсор вверх;
- h – перемещает курсор вправо;
- l – перемещает курсор влево.
Попробуйте использовать <h> пока не дойдете до начала строки. Отметьте, что Vi не даст вам перескочить на предыдущую строку, нажимая <h>, если вы находитесь в начале строки. Точно также он не позволит вам перескочить на следующую строку, нажимая <l> в конце строки.
Перемещения в Vi, часть 2
Vi предоставляет специальные команды для прыжков в начало и конец текущей строки:
- 0 (ноль) – перескочить на первый символ в строке;
- $ – перескочить на последний символ в строке.
Поскольку у Vi так много команд перемещения, его можно использовать в качестве великолепного инструмента просмотра — «pager»а (как команды more или less). Используя Vi для просмотра, вы очень быстро запомните все команды перемещения.
Вы также можете использовать <C-F> и <C-B> для перемещения вперед и назад сразу на страницу. Современные версии Vi (такие как Vim) могут позволить использовать для этих целей клавиши <PageUp> и <PageDown>.
Комбинация <C-F> означает комбинацию клавиш <Ctrl>+<F>. Во многих источниках про Vim можно встретить именно такое обозначение комбинация клавиш. Часто еще можно встретить и такое обозначение: ^F
Перемещение по словам, часть 1
Vi также позволяет вам перемещаться влево и вправо по словам:
- w – перемещения на первый символ следующего слова нажмите;
- e – передвинуться на следующий последний символ слова нажмите;
- b – сдвинуться на предыдущий первый символ слова можно нажимая.
Перемещение по словам, часть 2
Позабавившись с командами перемещения по словам, вы могли заметить, что Vi считает слова типа «foo-bar-oni» пятью различными словами! Это происходит потому, что Vi по умолчанию разделяет слова пробелами или знаками пунктуации (которые тоже считает словами). Поэтому foo-bar-oni считается пятью словами: «foo»,«-»,«bar»,«-» и «oni».
Иногда вам так и надо, а иногда — нет. К счастью, Vi воспринимает понятие «большого слова». vi разделяет большие слова только пробелами и началами строк. Это значит, что foo-bar-oni состоит из пяти Vi-слов, но является только одним большим словом Vi.
Перемещение по словам, часть 3
Чтобы переместиться на следующее или предыдущее большое слово, вы можете использовать «заглавные» команды перемещения по словам. Нажав следующие клавиши, вы попадете на:
- W — первый символ следующего большого слова;
- E — следующий последний символ большого слова;
- B — предшествующий первый символ большого слова.
Дальние переходы
Осталось рассмотреть еще несколько команд, и можно будет начинать их записывать на шпаргалку. Вы можете использовать скобки:
- ( и ) чтобы перейти на начало предыдущего и следующего предложения.
- { или } (фигурные скобки) – Позволят перескочить в начало параграфа.
Level 1 — Survive
The most distinctive feature of VIM is that it has modes. We can define the main four of them:
- Normal mode — here you can type text commands and do navigation. To enter this mode press
- Insert mode — in this mode you can type text as in other editors. To enter this mode press
- Visual mode — here you can select text. To enter this mode press
- Command mode — editor commands (like save, open, etc.). To enter this mode press
Also, you have to learn basic navigation which works in a normal mode. Forget about arrows because they are slow to work with. When you are typing, your fingers are usually placed in the middle of your keyboard. Left hand on asdf and right hand on jkl;. And usually, you are navigating in your code up/down and rarely left/right (later we will speak about navigation within the line). So navigation in VIM is the following:
- down — (looks like a down arrow)
- up —
- left —
- right —
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.
Открываем файл
Перед использование Vi для редактирования файлов вам следует узнать, как в Vi перемещаться по файлу. У Vi множество команд перемещения, многие из них мы сейчас рассмотрим. Для этой части обучения найдите какой-нибудь малоценный текстовый файл (TODO: лучше на английском) и загрузите его в Vi напечатав:
vi myfile.txt
Если у вас установлен Vim, наберите в консоли:
vim myfile.txt
Если вы предпочитаете использовать GVim:
gvim myfile.txt
myfile.txt должно быть именем текстового файла в вашей системе.
Внутри Vi
После загрузки Vi, на экране вы должны увидеть часть загруженного вами текстового файла. Поздравляю — вы уже в Vi! В отличии от большинства редакторов, загрузившись, Vi находится в специальном режиме, называемом «командным режимом». Это значит, что если вы нажмете клавишу <l>(строчная L), вместо появления «l» на месте курсора вы увидите, что курсор всего лишь сдвинулся на один символ вправо. В командном режиме знаки, набираемые на клавиатуре, используются как команды для Vi, а не как помещаемые в текст символы. Один из наиболее важных типов команд — это команды перемещения. Давайте рассмотрим некоторые из них.
Try it with your browser
-
USAGE
- Almost all Vim’s powerful features (syntax highlighting, Vim script, text objects,
…) including the latest features (popup window, …) are supported. - Drag&Drop files to browser tab opens them in Vim.
-
only writes file on memory. Download current buffer by or
specific file by . - Clipboard register is supported. For example, paste system clipboard text
to Vim with or , and copy text in Vim to system clipboard with
or .
If you want to synchronize Vim’s clipboard with system clipboard,
should work like normal Vim. -
fetches a file from to . Arbitrary
remote files can be opened (care about CORS). - Default colorscheme is onedark.vim, but vim-monokai is
also available as high-contrast colorscheme. -
evaluates the JavaScript code in browser. evaluates
current buffer. - vimtutor is available by .
- Add query parameters (e.g. ) to
add command line arguments. - Please read the usage documentation for more details.
- Almost all Vim’s powerful features (syntax highlighting, Vim script, text objects,
-
NOTICE
- Please access from desktop Chrome, Firefox, Safari or Chromium based browsers
since this project uses and . On Firefox or Safari,
feature flags ( for Firefox) must be enabled
for now. - vim.wasm takes key inputs from DOM event. Please disable your browser
extensions which intercept key events (incognito mode would be the best). - This project is very early phase of experiment. You may notice soon on
trying it… it’s buggy 🙂 - If inputting something does not change anything, please try to click somewhere
in the page. Vim may have lost the focus. - Vim exits on , but it does not close a browser tab. Please close it
manually 🙂
- Please access from desktop Chrome, Firefox, Safari or Chromium based browsers
The current ported Vim version is 8.2.0055 with ‘normal’ and ‘small’ features sets.
Please check changelog for update history.
Related Projects
Following projects are related to this npm package and may be more suitable for your use case.
-
vimwasm-try-plugin: Command line tool
to open vim.wasm including specified Vim plugin instantly. You can try Vim plugin
without installing it!
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.
Лирическое отступление
Твой текстовый редактор или IDE – он как гостиничный номер. Это может быть трехзвездочный или пятизвездочный номер, и тебе в нем нравится. Его обставили ради твоего удобства, он довольно уютный, в ванной всегда есть свежие полотенца и, возможно, в минибаре есть кое-какая выпивка.
Вот только если твои ноги, по стечению обстоятельств, не умещаются в кровати, придется либо искать другую гостиницу, либо мириться с этим небольшим неудобством. Это ведь не так сложно, присогнуть ноги, когда спишь? И еще подтыкать щипцы для льда, чтоб пользоваться кондиционером при открытом окне. И мириться со всеми остальными неудобствами ради минибара и полотенец.
Vim, он не такой. Vim – это новенькая трехкомнатная квартира в модном комплексе, которую ты только что выиграл в лотерею. Именно в этой квартире ты реализуешь все те фантазии, о которых мечтал украдкой всю свою жизнь. Именно в ней твой ребенок сделает свои первые шаги, а потом – и первые домашние задания.
Конечно, мебели в этой квартире пока нет, и первое время придется поспать на полу. Но кровать в твоей спальне будет именно такая, как тебе нравится. И сантехнику ты выберешь сам. И каждую мелочь, которая тебя достает, сможешь исправить раз и навсегда, чтобы больше никогда о ней не вспоминать. Твой дом – твоя крепость.
Не забывай, что, в отличие от реальных квартир, Vim раздается бесплатно. И, в отличие от реальных квартир, его не ограбят и в нем не случится пожар.
🤔 Зачем редактировать текст без мыши?
У мыши один курсор, которым нужно целиться в мелкие объекты на экране. А пальцев на руках десять, и ими никуда целиться не надо (при должной сноровке). Если у вас выработана мышечная память и вы знаете горячие клавиши (или команды Vim), вы будете редактировать текст быстрее, чем при использовании мыши.
Посмотрите, как удаляет строку среднестатистический пользователь:
- Он отрывает одну руку от клавиатуры.
- Берётся за мышку.
- Выделяет мышкой ненужную строку.
- Нажимает свободной рукой клавишу удаления.
- Возвращает обе руки в исходное положение на клавиатуру.
А так это же действие выполнит пользователь Vim:
- Он жмёт «esc», чтобы перейти в режим команд.
- C помощью навигационных клавиш j и k находит нужную строку.
- Пишет команду dd — удаление строки.
- Жмёт i, чтобы вернуться к редактированию текста.
Пользователь Vim убирает руки с клавиатуры, только чтобы поесть или почесать репу. Всё остальное время он короткими командами обрабатывает текст в несколько раз быстрее, чем любой человек с мышью.
После привыкания работа в Vim сравнима с игрой на гитаре: вы управляете текстом, будто он продолжение вашей руки. Фильмы про хакеров видели? Вот такой эффект.
Экранный режим
Лучшим способом вырезать и вставлять фрагменты текста является использование экранного режима, специального режима, добавленного в современных версиях Vi, таких как Vim и elvis. Вы можете представлять себе экранный режим как режим «подсвечивания текста». Выделенный текст может быть скопирован или удален, а затем вставлен. Если вы используете GVim, выделить кусок текста вы можете просто нажав левую кнопку мышки и протащив курсор по нужной области.
Войти в экранный режим вы еще можете нажав v (это может быть вашей единственной возможностью, если вы используете Vi в консоли). Затем, двигая курсор командами перемещения (обычно стрелками), вы можете выделить область текста. Закончив выделение, вы уже готовы вырезать либо копировать текст.
Для копирования текста нажмите y (от слова «yank»). Чтобы вырезать текст нажмите d. Вы будете переведены назад в командный режим. Теперь переместитесь в то место, где вы хотите вставить вырезанный или скопированный текст, и нажмите P (заглавная) для вставки перед курсором или p (строчная) для вставки за курсором. Всё, копирование\вырезание и вставка выполнены! А теперь проделайте еще несколько раз процедуру копирования\вырезания и вставки перед тем, как перейти к следующему разделу.
Для того, чтобы вставить в редактор содержимое буфера обмена (в который Вы скопировали информацию по <Ctrl>+<C>) необходимо установить утилиту xclip
apt-get install xclip
и скопировав нужный текст выполнить в командном режиме редактора
:r! xclip -o и нажмите <ENTER>.
What is New in the Vim Latest Version?
✓ Compatibilities improvement for new Windows update.
✓ Fixes bugs.
How to download and install Vim for Windows 10 PC/laptop
Now let’s just move to the next section to share the steps you have to follow to download Vim for Windows PC. So here we go:
- Download the Vim installer file from the link above.
- Save the downloaded file to your computer.
- Double-click on the downloaded Vim installer file.
- Now, a smart screen might appear and ask for a confirmation.
- Click “Yes” to confirm.
- Finally, follow the installation instructions until you get a confirmation notification of a successful installation process.
So those are all the processes that you have to follow to download Vim for Windows PC. Then let’s go on to the next section where we will discuss Vim itself. So you can understand the application and its features. So here we go:
Top Features of Vim for Windows PC
Vim is a Developer Tools application like CodeLite, Scala, and JDK from Bram Moolenar. It has a simple and basic user interface, and most importantly, it is free to download. Vim is an efficient software that is recommended by many Windows PC users.
This application’s primary functions are comprehensive and go beyond the features offered by others that can be considered as its rivals.
- Vim for PC – fast, reliable, and robust by Bram Moolenar.
- Vim Free & Safe Download.
- Vim latest version for the best experience.
- It works/compatible with almost all Windows versions, including Windows XP / Vista / Windows 7 / Windows 8 / Windows 10.
- Free of Cost!
- User-friendly Interface.
- Easy to Use.
- Privacy and Security!
- Lightweight and consume low resources.
- Best for Developer Tools application.
- PC User’s choice!
Что такое Vim
Vim — это специализированный текстовый редактор для программистов. Он предназначен для работы с большими объёмами кода без использования мыши.
Главная особенность Vim — два режима: режим написания текста и режим команд. В первом режиме вы как обычно пишете код, а во втором молниеносно управляете им. Режимы работают параллельно друг другу и меняются по нажатию клавиш.
Главная сила — в огромном количестве клавиатурных команд, которые помогают быстро редактировать текст. Например:
dd — удалить строку, на которой вы сейчас стоите;
10dd — удалить сколько-то строк, в этом случае 10;
cw — заменить слово на другое;
w, b — курсор вперёд или назад на одно слово;
A — дописать текст в конец строки;
I — Начать вписывать текст в начало строки;
U — вернуть изменения в строке (например, если случайно стёр);
: 10,25 w temp — сохранить кусок документа в файл temp. Конкретно здесь сохранится кусок с 10-й по 25-ю строку.
И таких команд несколько десятков. Всё построено вокруг того, чтобы делать все текстовые дела молниеносно и принципиально без участия мыши.
Команды Vim, разложенные на клавиатуре
Перемещение
Вы всегда можете передвигаться по документу стрелками, но vim предоставляет более быстрый и удобный способ. В нормальном режиме для навигации применяются следующие клавиши:
h — перемещение влевоj — перемещение внизk — перемещение вверхl — перемещение вправо
Сначала эти клавиши могут показаться непонятными и неинтуитивными, но они были выбраны потому, что находятся в среднем ряду на стандартной клавиатуре. Это значит, что рука пользователя проходит от положения покоя значительно меньшее расстояние, чем при использовании стрелок.
Также есть дополнительные функции навигации, вот несколько наиболее важных:
gg — переход в начало документаG — переход в конец документа. Если предварительно ввести номер — переместиться на строку с этими номеромw — перемещение к следующему слову. Если предварительно ввести количество — переместиться на это количество словb — перемещение к предыдущему слову. Если предварительно вввести количество — переместиться на это количество слов назадe — перемещение к концу слова. Если предварительно указать количество — переместиться на указанное количество слов — перемещение к началу строки$ — перемещение к концу строки
Поиск текста
Что бы найти фрагмент текста, нужно перед текстом поиска ввести слэш «/» и нажать enter
/это По умолчанию поиск в vim регистрозависимый, для того что бы сделать поиск независимый от регистра, нужно перед текстом ввести следующую комбинацию "/\c" /\cэто
Если же наоборот нужно сделать явное задание регистрозависимого поиска используйте комбинацию «/\C»
/\СЭто будет
Что бы найти следующий фрагмент нажмите «n» предыдущий «N»
Дальше — больше
Приведенной выше информации вполне достаточно, чтобы открывать, редактировать и сохранять файлы в текстовом редакторе Vim, однако у него есть возможности, которые могут существенно упростить и ускорить работу. Стоит начать с пояснения: Vi был одним из первых визуальных текстовых редакторов, однако начиная с определенной версии программный продукт стал доступен только под коммерческой лицензией. Энтузиасты начали разрабатывать свои аналоги этого текстового редактора, одним из которых является Vim (сокращение от Vi Improved — Vi усовершенствованный). Vim получил широкое распространение в *nix-дистрибутивах и при запуске команды vi в консоли вероятнее всего откроется именно он.
Прежде всего нужно понять, что Vim может работать в нескольких режимах, каждый из которых обладает своими особенностями и набором поддерживаемых функций. Сразу после запуска редактора вы окажетесь в обычном режиме (normal). Здесь можно не только перемещать курсор по тексту, но и выделять/удалять/копировать/вставлять как отдельные символы, так и целые блоки текста. Эти задачи выполняются нажатием соответствующих букв и цифр (причем регистр букв имеет значение), точка отсчета — текущее положение курсора. Рассмотрим навигацию по файлу:
- h — смещение курсора на один символ влево;
- j — смещение курсора на один символ вниз;
- k – смещение курсора на один символ вверх;
- l – смещение курсора на один символ вправо;
- w – смещение курсора в начало следующего слова в данной строке;
- b – смещение курсора в начало предыдущего слова в данной строке;
- G – переместить курсор в конец файла;
- gg – вернуться в начало файла.
Действия навигации также можно совмещать с цифрами, например, комбинация 3w сместит курсор вперед на три слова, а 5k на пять строк вверх.
Часто используемые операции c текстом:
- x — удалить символ под курсором;
- d — удалить символы/строки;
- dd — удалить строку целиком;
- D — удалить символы от текущего положения курсора до конца строки;
- v — включить режим выделения текста;
- y — скопировать символы/строки;
- yy — скопировать строку целиком;
- p — вставить символы/строки;
- u — отменить последнее действие.
Функции удаления и копирования требуют дополнительного пояснения, ведь при нажатии d или y вроде бы ничего не происходит. Дело в том, что редактор ожидает дальнейших указаний — сколько строк символов нужно удалить/скопировать и в каком направлении от текущего положения курсора вести отсчет. Чтобы удалить пять символов вправо от курсора, нужно последовательно нажать d5l, чтобы скопировать три строки, следующие после курсора — y5j. Если имеется выделенный текст, для его копирования достаточно нажать y.
Имеется в Vim и функция поиска:
- /шаблон — все вхождения набора символов, указанного после (слэша) будут подсвечены в тексте;
- n — сместить курсор к следующему вхождению;
- N — сместить курсор к предыдущему вхождению.
Другой режим работы Vim — режим редактирования. Переключиться в него можно несколькими способами:
- i — режим вставки (INSERT), ввод начинается с позиции курсора;
- a — режим вставки (INSERT), ввод начинается с позиции, следующей за курсором;
- A — режим вставки (INSERT), курсор перемещается в конец текущей строки;
- R — режим замены (REPLACE), все вводимые символы будут последовательно заменять находящиеся под курсором.
Если нужно заменить всего один символ, находящийся под курсором, достаточно нажать r и нужный символ — замена будет произведена без перехода в режим редактирования. Внизу экрана появляется соответствующий индикатор режима — INSERT или REPLACE. Вернутся в общий режим можно нажатием кнопки Esc (индикатор должен пропасть).
Еще один режим работы Vim — командный. Переход в него осуществляется из общего режима нажатием (двоеточия). Соответствующий индикатор появляется в нижнем левом углу окна, после чего можно вводить команды и их сочетания.
- :q — выйти из редактора;
- :q! — выйти из редактора без сохранения изменений в файле;
- :w — сохранить изменения в файл;
- :wq — сохранить изменения и закрыть редактор;
- :r имя_файла — добавить содержимое указанного файла в редактируемый;
- :r! команда_консоли — выполнить команду и добавить ее вывод в файл.
Красота требует настройки
Самая базовая и, вместе с тем, одна из самых важных модификаций для программы, в которой вы будете проводить более 90% своего рабочего времени — внешний вид. Если вы пользуетесь терминальным Вимом и уже настраивали консоль, то эти изменения должны отобразиться и на самом редакторе, но можно пойти и дальше. Начнём с выбора темы.
Так наш подопечный (MacVim) выглядит сейчас:
Выбор темы
Для Вима силами волонтёров было написано немеренно готовых тем. Из большинства популярных редакторов их давно уже всех портировали. Как по мне, главная отличительная особенность Sublime Text — его тема , которую мы сейчас вероломно апроприируем.
Улучшенная строка состояния
Теперь давайте настроим наш status bar. Основная идея состоит в том, чтобы красиво показывать важную информацию по аналогии с tmux и панелями в WM на экране, касающуюся редактирования текста. Для этого давайте поставим :
Про Powerline мы поговорим далее, но главное, чего мы этим добьёмся, — секции строки состояния будут выделяться не прямоугольниками, а стрелками. Про Keymap мы поговорим в секции про интеграцию русского языка, но эта комманда просто скроет его индикатор из строки статуса (аналог останется в строке команд). Символ — это красивая альтернатива «ln», но также мною был опущен процентный показатель конца файла, ибо мне он показался излишним.
Вид Airline по умолчанию:
Вид после нашего вмешательства:
Шрифт и иконки
Как видите, мы сделали только хуже. Проблема заключается в том, что вам нужно установить в ваш терминал или gui шрифты с поддержкой . Для первого воспользуйтесь настройками самой консоли, а для второго это командой:
Но не спешите сейчас ставить полюбившийся вам шрифт из того списка. Во-первых, подобных шрифтов в природе больше и их можно патчить самому. Например, мой любимый — это , который поддерживает лигатуры (о них можете почитать там же). Во-вторых, есть ещё один отличный плагин , который добавляет в Airline и Nerdtree (файловый проводник) удобные иконочки.
Но и они не работают.
И подключим его так (в GUI. И да, «фура» тут намеренно):
Теперь все наши элементы кастомизации должны встать на место:
Стандартные опции
Таким образом мы осветили самые важные аспекты кастомизации внешнего вида Вим. Подробнее про работу этих плагинов можно почитать либо в их мануалах (через команду ) или на их страницах на гитхабе (ищутся в Гугл по имени из списка плагинов). Далее будут указаны другие полезные команды, а после этого мы перейдём к следующей большой теме: