Статьи

Начало работы с Vim

Vimlogo.svg

Vi / Vim — один из самых популярных редакторов в сообществе программистов. Vim существует уже несколько десятилетий и предлагает множество преимуществ и преимуществ при условии, что вы готовы этому научиться. Сегодня я надеюсь помочь вам на пути изучения Vim. Мы рассмотрим основы Vim в этом учебном пособии, и будет еще один для использования Vim в разработке на Ruby on Rails, который скоро будет опубликован.

Краткая история Vi и Vim

До появления UNIX появился текстовый редактор «ed», написанный Кеном Томпсоном в 1971 году. ed считается одним из старейших текстовых редакторов, а также первым, кто реализовал концепцию регулярных выражений.

Через некоторое время появился текстовый редактор «ex». ex — это сокращение от «EXtend», так как оно добавляет некоторые функции в ed и делает его проще.

Vi появился в 1976 году, написанный Биллом Джоем для операционной системы BSD. Лицензируется, конечно, по лицензии с тем же именем, что и операционная система (лицензия BSD).

Vi рассматривается как дополнение к ex которого было только 2 из текущих режимов vi . В этом уроке мы рассмотрим концепцию режимов и способы их использования.

Через несколько лет стали появляться и другие издания, самый известный из которых — Vim, сокращение от Vi Improved.

В 1991 году Брэм Муленаар начал работать над Vim. Цель состояла в том, чтобы создать Amiga-совместимый текстовый редактор для редактирования исходного кода. Vim лицензируется под GPL как программа с открытым исходным кодом. Vim работал в оболочке только до 1996 года, когда дебютировал первый графический интерфейс. В это время Vim BAC был в версии 4.

Вот несколько моих любимых функций Vim:

  • Vim был перенесен на гораздо более широкий спектр ОС, чем vi.
  • Vim включает поддержку (подсветку синтаксиса, свертывание кода и т. Д.) Для нескольких популярных языков программирования (C / C ++, Python, Perl, shell и т. Д.).
  • Vim интегрируется с cscope.
  • Vim может использоваться для редактирования файлов с использованием сетевых протоколов, таких как SSH и HTTP.
  • Vim включает многоуровневую отмену / повтор.
  • Vim позволяет разделить экран для редактирования нескольких файлов.
  • Vim может редактировать файлы в сжатом архиве (gzip, zip, tar и т. Д.).
  • Vim включает встроенный diff для сравнения файлов (vimdiff).
  • Vim включает поддержку плагинов и более тонкий контроль над файлами конфигурации и запуска.
  • Vim может быть написан с помощью vimscript или с помощью внешнего языка сценариев (например, python, perl, shell).

Установка Vim

На Ubuntu

Если вы используете рабочий стол на основе GNOME, например Unity, вы можете использовать vim-gnome который является версией Vim с графическим интерфейсом. Чтобы установить, введите в терминале

 sudo apt-get install vim-gnome 

Если вы используете другую среду рабочего стола, такую ​​как XFCE, LXDE или KDE, вы можете использовать vim-gtk который не зависит от такого количества дополнительных файлов библиотеки, как vim-gnome . Чтобы установить, введите в терминале:

 sudo apt-get install vim-gtk 

НОТА:
Начиная с Ubuntu 6.10 (Edgy Eft), установка Vim по умолчанию является урезанной версией, называемой vim-tiny. Для того, чтобы получить полную версию в комплекте с интерактивной справочной документацией и многими дополнительными функциями, такими как свертывание кода; вам нужно будет установить «vim»:

 sudo apt-get install vim 

На MacOSX

В Mac OS X менеджерами пакетов являются Homebrew и MacPorts . Существует проект под названием MacVim, который представляет собой графический интерфейс для Vim. Чтобы установить его с помощью Homebrew, просто введите:

 brew install macvim --override-system-vim 

Это создаст символические mvim vim , vimdiff и т. Д. На mvim в /usr/local/bin/vim . Вы должны убедиться, что /usr/local/bin находится перед /usr/bin в вашем PATH. MacVim поставляется со встроенной поддержкой Ruby, которая будет полезна при интеграции некоторых плагинов, таких как Command-T.

На винде

  1. Загрузить Vim: перейдите на страницу загрузки Vim и нажмите «ПК: MS-DOS и MS-Windows». Нажмите на gvim72.exe , который является gvim72.exe исполняемым файлом, или загрузите gvim72.exe напрямую.
  2. Установка: После загрузки нажмите на gVim72.exe , чтобы установить gVim в Windows, как показано ниже.

Подтверждение установки Vim
Подтверждение установки Vim

Vim 7.2 Лицензионное соглашение
Vim 7.2 Лицензионное соглашение

Вариант установки Vim. (Не забудьте выбрать «Полный» из выпадающего списка)
Вариант установки Vim. (Не забудьте выбрать «Полный» из выпадающего списка)

Место установки Vim (каталог должен заканчиваться на vim)
Место установки Vim (каталог должен заканчиваться на vim)

Ход и завершение установки gVim
Ход и завершение установки gVim

Начало Vim

Вот распространенный сценарий, когда люди пытаются использовать Vim впервые:

  • Запустите Vim и попробуйте ввести «test»
  • Удивительно, но печатается только буква «т»!
  • Попробуйте закрыть vim, но они не могут понять, как.
  • Принудительно выйти или убить процесс.
  • Забудьте о Vim и никогда не пытайтесь использовать его снова.

Многие новички не знают, что есть много полезных ресурсов для изучения основ Vim. Там есть хорошо известный vimtutor (который вы можете использовать, набрав vimtutor в терминале, и он познакомит вас с основами менее чем за 30 минут) или потрясающая игра Vim Adeventures . Почему бы не дать им попробовать, прежде чем нажать vim из терминала или запустить версию Vim с графическим интерфейсом?

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

Vim похож на игру: вы начинаете играть в нее, зная только основы, затем вы учитесь все больше и больше. Через некоторое время вы начинаете эффективно составлять или объединять команды в команды, нарастаете мышечную память, и затем вы находитесь на склоне. Говоря о мышечной памяти, рекомендуется держать чит-лист под рукой, когда вы используете Vim.

Вы можете запустить Vim, набрав vi или vim в терминале, или vim в графическом режиме, набрав gvim в Linux или macvim на Mac. При этом должен появиться пустой экран с подробной информацией о Vim. Однако большинство попыток набрать текст не удастся! Вы находитесь в неправильном режиме! Это подводит нас к самой запутанной функции для начинающих: режимы.

Vim Modes

Vim предполагает, что пользователи редактируют текст чаще, чем набирают его. Следовательно, он имеет режим для вставки текста и несколько режимов для редактирования текста. Поведение Vim зависит от того, какой режим является текущим:

  1. Командный режим является режимом по умолчанию Vim. Он предоставляет библиотеку клавиатурных команд для редактирования текста. Нажатие клавиши выхода переключает обратно в этот режим.

  2. Режим вставки позволяет вставлять текст. Эта функция ассоциируется у большинства пользователей с текстовыми редакторами. Нажатие клавиши i в командном режиме переключает в режим вставки.

  3. Визуальный режим обеспечивает функциональность для выделения текста. Нажатие клавиши v в командном режиме переключает в визуальный режим.

Vim Commands

Дизайн Vi очень похож на дизайн операционной системы Unix. То есть, функциональность обеспечивается с помощью библиотеки простых команд, которые могут быть объединены в более сложные команды.

Например, команда w перемещает курсор в начало следующего слова. Команда d — это команда удаления. Таким образом, dw удаляет следующее слово; d2w удаляет следующие два слова. Вот как работает составление действий на основе команд.

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

Как новичок, вы должны быть в состоянии (все это в командном режиме):

  • Переключение между командным режимом и режимом вставки.
    • Чтобы переключиться из командного режима в режим вставки и вставить текст в текущей позиции курсора, нажмите i .
    • Чтобы переключиться из командного режима в режим вставки и вставить текст в начале строки, нажмите I
    • Чтобы переключиться из командного режима в режим вставки и вставить текст в конце строки, нажмите A
    • Для переключения из режима вставки обратно в командный режим используйте Esc .
  • Открытие новых линий
    • Чтобы открыть новую строку после текущей и начать вставку текста (переключение в режим вставки), используйте o .
    • Чтобы открыть новую строку перед текущей и начать вставку текста (переключение в режим вставки), используйте O
  • Навигация по источнику с помощью hjkl
    • Перейдите вверх по линии, нажмите кнопку k .
    • Переместитесь вниз по линии, нажмите j .
    • Навигация по левому символу, нажмите h .
    • Навигация вправо по символу, нажмите l .
  • Сохранить
    • Для сохранения текущих изменений используйте :w (сокращение от записи).
  • Выход
    • Чтобы выйти, введите :q (сокращение от quit).
    • Чтобы сохранить и выйти, введите :wq .
    • Для принудительного выхода без сохранения введите :q! ,
    • Для принудительного сохранения и выхода введите :wq! ,
  • Отменить
    • Чтобы отменить последнее редактирование, используйте u .
  • Redo
    • Чтобы повторить, используйте CTRL + r .
  • Скопировать и вставить
    • Чтобы выделить блок текста, нажмите Ctrl + v чтобы переключиться в визуальный режим, затем выберите блок с помощью клавиш со стрелками ( hjkl ).
    • Чтобы скопировать выбранный блок, yy (строка yank).
    • Чтобы вставить выбранный блок, p (вставить).
    • Чтобы вставить перед курсором, P
  • Вкладка завершена
    • Чтобы использовать завершение табуляции, нажмите CTRL + p .
  • Переместить в начало и конец файла
    • Чтобы перейти к началу строки, 0 .
    • Чтобы перейти к концу строки, $ .
  • Заменитель / Заменить
    • Чтобы заменить символ под курсором, введите r а затем символ, который вы замените.
    • Для переключения в режим замены используйте Shift + r и начните печатать.
  • Объединить операторы (например, удалить) с движениями (например, конец слова)
    • Как уже упоминалось, команды Vim являются составными. Таким образом, вы можете комбинировать операции, такие как удаление / изменение / копирование, с такими движениями, как начало / конец слова / строки.
    • Чтобы удалить до конца слова, введите dw .
    • Чтобы удалить до конца строки, введите d$ .
    • Для удаления текста внутри кавычек, двойных кавычек, скобок, скобок используйте di' , di" , di( , di{ , соответственно).
    • Чтобы скопировать в конец слова, введите yw
  • Вы можете ввести число перед командой, чтобы выполнить его несколько раз
    • Чтобы удалить 4 строки, введите 4dd .
  • Повторите последнюю команду, набрав . ,
  • Перейти к определенной позиции в файле.
    • Для перехода к началу файла используйте gg .
    • Чтобы перейти к концу файла, используйте G
    • Чтобы перейти к определенной строке в файле, используйте 8gg (8 — номер строки).
  • Поиск вперед и назад.
  • Подберите круглые скобки и скобки.
    • Чтобы соответствовать текущим скобкам или скобкам, используйте % .
  • Разделить по горизонтали и вертикали.
    • Чтобы разделить экран по горизонтали, используйте :sp .
    • Чтобы разделить экран по вертикали, используйте :vs
  • Переключение между сплитами.
    • Чтобы переключиться на следующий разделенный экран, используйте CTRL + ww .
  • Прыгайте вперед и назад.
    • Чтобы перейти вперед на страницу, используйте CTRL + f .
    • Для перехода назад на страницу используйте CTRL + b .
  • Измените вашу среду с помощью dotfiles.
    • Вы можете сделать это после прочтения этого урока :). Простой способ отредактировать файл .vimrc :e $MYVIMRC .
  • Выполнить команду оболочки.
    • Чтобы выполнить команду оболочки, просто наберите :sh и команду.

Для получения дополнительных команд, проверьте этот удивительный учебник .

Vim Recording

В Vim есть отличная функция под названием Vim Macros. Это позволяет вам записывать любые действия, которые вы делаете, и воспроизводить их.

Чтобы начать запись макроса, просто введите q а затем любую букву. Буква, которую вы вводите после q — это место назначения макроса.

Представьте, что вы хотите добавить несколько слов в определенные позиции в разных строках, например так:

 They smart He smart They smart He smart They smart He smart 

Вы хотите, чтобы это было преобразовано в:

 They are smart He is smart They are smart He is smart They are smart He is smart 
  • Начните запись, нажав q и любую букву (давайте выберем w ).
  • В начале строки перейдите в пробел после «Они», войдите в режим вставки ( i ) и введите «are».
  • Нажмите Esc чтобы вернуться в командный режим, и введите ^ чтобы перейти к началу строки.
  • Нажмите j чтобы перейти к следующей строке.
  • Перейдите к пробелу после слова «He», войдите в режим вставки, затем введите «is» и вернитесь в командный режим.
  • Перейти к началу следующей строки.
  • Нажмите q чтобы закончить запись.

Теперь вы можете набрать 2@w чтобы повторить макрос для остальных строк.

Советы по повышению производительности

Копировать в системный буфер обмена

Чтобы включить копирование в системный буфер обмена с помощью CTRL + c , просто добавьте следующую строку в файл ~/.vimrc (или _vimrc в Windows):

 " Enable copying to clipboard using `CTRL + c` map <Cc> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR> 

Использование клавиш со стрелками

В Vim вы можете использовать клавиши со стрелками как в командном, так и в режиме вставки, но это плохая практика. Вы должны использовать hjkl для навигации, чтобы нарастить мышечную память. Точно так же не используйте кнопки Home или End , просто придерживайте $ и ^ чтобы перейти к концу и началу строки соответственно.

Вы можете отменить отображение клавиш со стрелками, чтобы избежать искушения. Просто добавьте следующие строки в ваш файл vimrc :

 noremap <Up> <nop> noremap <Down> <nop> noremap <Left> <nop> noremap <Right> <nop> 

Переопределить CapsLock для управления

Немного поработав с Vim, вы можете обнаружить, что больно использовать клавишу Control. Клавиша управления расположена в очень плохом месте на клавиатуре, поэтому многие пользователи Vim переназначают клавишу управления в CapsLock.

Вот как это сделать на Mac, Linux и Windows.

Изменение регистра и повторение команды

Vim предоставляет три замечательные команды для работы с текстом. Я часто нахожу опытных пользователей Vim, которые не знают о них, что действительно странно. Три команды:

  • ~ (tilde) — переключать регистр букв / выделения (верхний регистр / нижний регистр).
  • . (dot) . (dot) — повторить последний набор команд (используйте в комбинации с поиском, например, * и прыжки).
  • * (star) — поиск и выделение слова под курсором.

Настройка Vim

Когда Vim запускается, он загружает файл с именем .vimrc ( _vimrc в Windows), в котором хранятся параметры конфигурации. Он находится в вашем домашнем каталоге, указанном $HOME (Windows) или ~ (Unix).

Введите :help vimrc в Vim, чтобы увидеть некоторую документацию по этому поводу. В этом руководстве мы отредактируем файл vimrc добавив некоторые плагины и настройки.

Голый Минимум .vimrc

Рекомендуется начинать настройку с минимального файла .vimrc . Да, есть много популярных разработчиков, которые делятся своими точечными файлами (файлами конфигурации), но они создавали их по своему пути, в зависимости от их использования и потребностей. Итак, зачем просто копировать это полностью ??? Я думаю, что каждый пользователь должен начать с минимального файла .vimrc и настроить его в соответствии со своими потребностями.

Вот хорошая отправная точка для вашего .vimrc :

 set nocompatible " choose no compatibility with legacy vi syntax enable set encoding=utf-8 set showcmd " display incomplete commands filetype plugin indent on " load file type plugins + indentation "" Whitespace set nowrap " don't wrap lines set tabstop=2 shiftwidth=2 " a tab is two spaces (or set this to 4) set expandtab " use spaces, not tabs (optional) set backspace=indent,eol,start " backspace through everything in insert mode "" Searching set hlsearch " highlight matches set incsearch " incremental searching set ignorecase " searches are case insensitive... set smartcase " ... unless they contain at least one capital letter 

Восстановление после ошибок

Ошибки в вашем файле vimrc могут помешать успешному запуску Vim. Надежный способ справиться с этим делом — переименовать файл vimrc , запустить vim и отредактировать переименованный файл. Кроме того, вы можете запустить Vim с помощью такой команды (или использовать «GVim / MacVim», если вы так запускаете Vim):

vim -N -u НЕТ -U НЕТ

-N запускается в «несовместимом» режиме (то есть с дополнительными функциями Vim). Аргумент NONE (должен быть в верхнем регистре) пропускает инициализации и не читает vimrc (-u) и не читает ни один файл gvimrc (-U).

Использование менеджера плагинов Vundle

Vim имеет систему плагинов, которую можно использовать для добавления дополнительных функций. Эти плагины реализованы в виде простых файлов конфигурации, расположенных в подкаталогах внутри каталога $HOME/.vim . Если вы используете много плагинов, управление ими может быть проблемой, поэтому менеджер плагинов может помочь эффективно позаботиться о них.

Есть несколько менеджеров плагинов для Vim, таких как Vundle и Pathogen , которые позволяют легко добавлять, устанавливать, обновлять, искать или удалять любые плагины. Здесь мы будем изучать, как использовать Vundle.

Vundle — это сокращение от Vim Bundle . Чтобы установить его, вам нужно сначала иметь Git . Вот руководство по установке git. После установки git вы можете установить Vundle, следуя инструкциям ниже.

1- В вашем терминале введите:

 $ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 

Эта команда клонирует плагин Vundle в правильное место.

2- Откройте файл vimrc, набрав :e $MYVIMRC в vim.

3- Включая Vundle в ваш vimrc

Поместите это в верхней части вашего .vimrc чтобы использовать Vundle.

 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 'gmarik/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required 

4- Добавьте плагины:

Теперь вы можете добавить любой плагин, который вам нужен, просто добавив слово Plugin и URL для него или его Git-репозитория (не имеет значения, находится ли репозиторий на Github, другом сервере или даже на вашем компьютере, просто добавьте путь к Это.)

Например, чтобы добавить плагин vim-fugitive , поместите следующую строку внутри call vundle#begin() и call vundle#end() .

 Plugin 'tpope/vim-fugitive.git' 

НОТА:
Мы не добавили полный URL-адрес git (это git@github.com: tpope / vim-fugitive.git), потому что Vundle автоматически сделает это за нас, если репозиторий будет размещен на Github. Если это не на Github, добавьте полный путь.

5- Установка плагинов

Чтобы установить плагин, запустите vim и запустите :PluginInstall или из командной строки просто введите:

 $ vim +PluginInstall +qall 

6- Поиск плагинов

Одна из самых полезных функций Vundle — возможность находить и устанавливать больше плагинов.

Чтобы перечислить каждый плагин, который Vundle может найти на сайте Vim Scripts используйте:

 :Plugins 

Или

 :PluginSearch! 

«!» В конце команды обновляет локальный список с сайта Vim Scripts.

Если мы хотим найти конкретный плагин, используйте:

 :PluginSearch! plugin_query 

7- Удаление плагинов

Чтобы удалить конкретный плагин, вам нужно сначала перечислить плагины с помощью команды :PluginList , затем перейти к строке плагина и нажать D чтобы отметить его для удаления. Затем выполните команду :PluginInstall .

НОТА:
После этого плагин представляет собой файл vimrc , и вы можете переустановить его, набрав :PluginInstall .

Это более простой способ удалить плагин, просто удалите его из файла vimrc и :PluginClean команду :PluginClean , которая удаляет любой плагин, которого нет в вашем файле vimrc .

 " Removing Plugins: Plugin 'MarkdownFootnotes' . . . Continue? [Y/n]: You can type "Y" to remove all unreferenced plugins. 

Vim Темы / Цветовые схемы

Вы можете добавить столько цветовых схем Vim в свой Vim, сколько захотите. Существует множество цветовых схем, от светлых до темных. Вот ссылка на самые популярные схемы. Давайте рассмотрим, как добавить эти схемы в Vim.

Каждая цветовая схема поставляется в файле с расширением .vim . Все, что вам нужно сделать, это загрузить файл в подкаталог colors , находящийся в ~/.vim . Затем из файла vimrc измените строку цветовой схемы colorscheme badwolf на имя выбранной вами цветовой схемы. Кроме того, вы можете использовать этот удивительный плагин прокрутки цветовой схемы.

Плагин цветовой схемы Scroller

Может быть сложно проверить цветовые схемы при их изменении вручную в файле vimrc . Представьте, что у вас есть список из 15 цветовых схем, и вам нужно выбрать подходящую по своему настроению. Это будет больно!

В этом преимущество плагина прокрутки цветовой схемы, который позволяет быстро и легко пролистывать схемы с помощью клавиш со стрелками и просматривать темы.

Просто поместите следующую строку в блок vundle в вашем файле vimrc :

 Plugin 'https://github.com/vim-scripts/ScrollColors' 

И добавьте :PluginInstall , который установит плагин.

После перезапуска Vim введите :SCROLL и используйте клавиши со стрелками для быстрого предварительного просмотра цветовых схем. Аккуратно, а?

Этот плагин позволяет только просматривать темы в текущем открытом сеансе Vim. Если вы перезапустите Vim, изменение цветовой схемы не вступит в силу, поэтому вам нужно вручную добавить выбранную цветовую схему в ваш vimrc, как упоминалось выше.

Сменные иконки Vim

Значок defualt Vim немного устарел, вот список некоторых альтернатив:

Учебные ресурсы

Резюме

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