Настройка vim для windows

Обновлено: 07.07.2024

Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.

ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.

Ну вот, опять. Склонив голову от стыда, вы запускаете очередной терминал, чтобы исполнить команду killall vim и продолжить заниматься своими делами.

С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).

Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim .

25–27 ноября, Онлайн, Беcплатно

В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).

Основы

Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.

Все команды чувствительны к регистру и должны выполняться вне режима insert.

Выход из Vim

Выход без сохранения изменений:

Как запомнить: quit dammit! (закройся, чёрт возьми!)

Выход с сохранением изменений:

Как запомнить: write to disk and quit

Навигация

Для перемещения по открытому файлу используйте стрелки.

Перемещение на строку 285:

Поиск слова «import»:

Изменение текста

Вставка текста там, где стоит курсор:

Вставка текста в конце текущей строки:

Выход из режима редактирования (возврат в стандартный режим):

Выделение текста

Переход в визуальный режим:

Для выделения текста используйте стрелки.

Выход из визуального режима:

Копирование, удаление, вставка

Копирование выделенного текста в буфер:

Удаление выделенного текста:

Копирование текущей строки в буфер:

Как запомнить: yank yank

Копирование трёх строк, включая текущую, в буфер:

Удаление текущей строки и помещение её в буфер:

Как запомнить: delete delete

Удаление 5 строк, включая текущую:

Вставка из буфера перед текущей строкой:

Вставка из буфера после текущей строки:

Отмена и восстановление последнего изменения

Отмена последнего изменения:

Восстановление последнего отменённого изменения:

Отмена двух последних изменений:

Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.

Работа с файлом

Открытие файла index.html вместо текущего:

Сохранение текущего файла:

Как запомнить: write to disk

Сохранение файла с изменённым именем, например, changes.txt:

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

Поиск и замена всех вхождений строки в файле:

Поиск и замена с запросом подтверждения замены:

Подсветка синтаксиса и отступы

Включение подсветки синтаксиса:

Включение автоматических отступов:

Увеличение отступов нескольких строк при выделении их в визуальном режиме:

Вкладки

Открытие server.py в новой вкладке:

Переход на вкладку справа:

Переход на предыдущую вкладку слева:

Как запомнить: tab previous

Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq .

Разделённый экран

Открытие templates/base.html в режиме вертикального разделения экрана:

Как запомнить: vertical split

Открытие shared.js в режиме горизонтального разделения экрана:

Как запомнить: the ’default’ horizontal split

Перемещение между «частями» экрана:

Для закрытия экрана переключитесь на него и используйте команду :q или :wq .

Настройка Vim: файл .vimrc

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

Например, добавление этих строк в

/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:

Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.

Полезные ресурсы

Вот ещё несколько полезных материалов для изучения Vim:

А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!

Бывают ситуации, когда очень хочется использовать любимый редактор, но под рукой нету *nix операционных систем, либо разработка ведётся на Windows.

Первое что приходит на ум — использование Windows версии gVim, но в этом случае возникает куча проблем с установкой плагинов, переносом конфигов и адаптации всего и вся. Что-то не будет компилироваться без бубна (например Ctrl-p), а что-то падать во время работы.

Cygwin и Mintty спешат на помощь

Качаем с сайта и устанавливаем последнюю версию Cygwin.

При установке выбираем любое зеркало из списка доступных.
Выбираем следующие пакеты:

  • git
  • Vim
  • ruby
  • libsasl2
  • ca-certificates

Для того, чтобы всё выглядело прилично — его нужно поднастроить. Запускаем mintty, тыкаем правой кнопкой на иконку в левом верхнем углу консольки и выбираем «Options. ».

Выключаем опцию Blinking, чтобы не отвлекало, выбираем привычный Block в качестве курсора.


Выбираем шрифт по вкусу, ставим сглаживание в Full, Locale — C, Character Set — UTF-8.


Очень важно поставить тип терминала в xterm-256color.


Одно несомненное преимущество данного подхода это то, что теперь можно использовать ту же самую конфигурацию Vim, что и в *nix системе. А так же мы получаем в своё распоряжение полноценную консоль и можем работать с Windows файлами с помощью утилит grep, find, ack.

Рекомендую создать приватный репозиторий со всеми конфигами совершенно бесплатно на каком-нибудь Bitbucket. Такие подборки обычно называют dotfiles.

Одним приятным открытием в плане конфигурации Vim-а для меня стал Vimified, который базируется на Vundle.

Его лучше ставить по шагам, а то мало-ли что-то пропустили во время установки Cygwin. Шаги установки подробно расписаны в описании к репозиторию.


Первый запуск Vim может пройти с ошибками из-за того, что предусмотренные конфигурацией пакеты ещё не установлены, но это не страшно.


Перезапускаем Vim. И вот что у нас должно получится после небольших корректировок и правок.

Вы не можете вернуться в школу вовремя из-за эпидемии. Вам необходимо установить vim на свой домашний компьютер с Windows и настроить среду, которая записана здесь.

  1. Дважды щелкните загруженный файл gvim_8.2.0539_x64.exe, чтобы начать установку, сначала выберите язык, затем войдите в интерфейс приветствия, нажмите «Далее»
  2. Получение согласия
  3. Выберите содержимое для установки, нажмите значение по умолчанию без особых требований, а затем нажмите кнопку «Далее».
  4. Выберите настройки vim, по умолчанию без особых требований, а затем нажмите Далее
  5. Выберите путь установки
  6. Процесс установки следующий, нужно немного подождать
  7. Отображается следующий интерфейс, указывающий на то, что установка прошла успешно. Нажмите Готово, чтобы завершить установку.

Чтобы запустить vim непосредственно из cmd или терминала Windows, добавьте путь установки vim в переменную окружения.

  1. Сначала найдите vim.exe или gvim.exe в пути установки (оба находятся в одной папке), скопируйте путь, как показано ниже.
  2. Щелкните правой кнопкой мыши этот компьютер-> Свойства-> Расширенные настройки системы-> Переменные среды, выберите Путь и нажмите Изменить, как показано ниже.
  3. Нажмите New и вставьте сюда путь к папке, в которую только что скопировал vim.exe, как показано ниже:
  4. Наконец, нажмите три подтверждения (всего в описанном выше процессе появится три окна, и каждое окно будет подтверждено один раз) для успешного добавления.

Есть один в установленной папке vim _vimrc Файл, эквивалентный vim под Linux .vimrc File, настройте в нем vim, в большинстве случаев так же, как Linux.

Интеллектуальная рекомендация


Краткое описание общих функций MPI

содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.

Так уж исторически сложилось, что для написания скриптов на Python я пользовался в основном SciTe. Пробовал когда-то Notepad++ и тому подобные Programmer's Notepad, но особо ими не проникся и в итоге остался на все том же SciTe. Тем более, что особо многого я от редактора и не требую, мне достаточно подсветки кода да возможности запуска скриптов прямо из редактора, а остальные возможности будут - хорошо, нет - обойдусь.

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

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

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

Настраиваем кодировки

Если в только что установленном Vim открыть скрипт в кодировке UTF-8, то, по крайней мере в Windows, мы увидим крокозяблы вместо русских букв:


Чтобы переключить кодировку на правильную UTF-8, вводим команду в командной строке редактора:

В результате получаем читаемые комментарии на русском языке:


Каждый раз вводить эту команду не интересно, поэтому добавим новый пункт меню, с помощью которого можно будет переключать кодировки

Для этого идем в папку, где установлен Vim и ищем файл _vimrc в Windows или .vimrc в linux. В Windows он расположен по адресу X:\Program Files\Vim. Заметьте, что сам (g)Vim расположен по адресу X:\Program Files\Vim\vim72

Как видите, свое меню создавать очень легко. Строка <CR> обозначает нажатие Enter, а комментарии начинаются с двойной кавычки.

Теперь мы можем вручную переключать кодировки:


Но вручную переключать кодировки не интересно, поэтому сделаем так, чтобы Vim сам пытался определять нужную кодировку. Для этого достаточно добавить всего одну строку в _vimrc:

" Список используемых кодировок для автоматического их определения
set fileencodings=utf-8,cp1251

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

Настраиваем внешний вид редактора

Во-первых, включаем нумерацию строк (как же без нумерации жить то?)

" Включаем нумерацию строк
set nu


Теперь надо сказать несколько слов про установку значений параметров. До этого мы использовали знак '=' вместе с командой set. Но некоторые параметры являются булевыми. Для их установки в значение true нужно написать

Если нужно отключить опцию (значение false), то нужно написать

То есть в нашем случае, если бы мы хотели отключить нумерацию строк, то нужно было бы написать

Обратите внимание, что после 'no' нет пробела.

Включим автоматическую расстановку отступов

" Включить автоотступы
set autoindent

И подсветку синтаксиса.

" Влючить подстветку синтаксиса
syntax on

Обычно по умолчанию она и так включена, но хуже не будет, если включим еще раз.

Устанавливаем размеры отступов для отступов и табуляций:

" Размер отступов
set shiftwidth=4

" Размеры табуляций
set tabstop=4
set softtabstop=4

" Более "умные" отступы при вставке их с помощью tab.
" На самом деле заметить влияние этой опции тяжело, но хуже из-за нее не будет :)
set smarttab

Теперь открытый исходник выглядит так


Включим использование фолдинга (folding), т.е. сворачивание участков кода

" Включаем фолдинг (сворачивание участков кода)
set foldenable

" Сворачивание по отступам
set fdm=indent

При открытии файла все участки сразу сворачиваются


На самом деле у fdm (или, полный вариант - foldmethod) есть несколько значений:

  • indent, когда сворачивание происходит по отступам (так как у Python отступы определяют вложение, то для него больше ничего и не надо);
  • syntax, когда сворачивание определяется файлом подсветки синтаксиса;
  • manual, когда сворачивание определяется вручную;
  • marker, для сворачивания используются специальные маркеры
  • diff, когда сворачивается текст, который не изменился

Часто для кода вполне подходит сворачивание по отступам, особенно для языка Python. Но можно сделать сворачивание и более умным, когда сворачиваться будут объявления классов, методов и т.п. Для этого устанавливаем другое значение параметра fdm:

" Сворачивание по синтаксису
set fdm=syntax

Но кроме этого, возможно, придется установить дополнительные плагины для нужных языков. Для Python, например, понадобится плагин python_fold. Чтобы его установить, достаточно скопировать файл python_fold.vim в папку ftplugin.

Теперь свернутый код будет выглядеть примерно следующим образом:


Но в то же время для сворачивание кода на Fortran дополнительные плагины не нужны, достаточно в _vimrc добавить следующую переменную:

" Включить сворачивание кода для Fortran
:let fortran_fold=1

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

" Автоматическое открытие сверток при заходе в них
set foldopen=all

Следующая опция делает так, чтобы рабочей папкой становилась директория, в которой расположен открытый файл. Это практически обязательная опция для отладки скриптов на Python.

"Автоматическое переключение рабочей папки
set autochdir

По умолчанию Vim делает файлы бекапа рядом с открытым файлом и свапа в рабочей директории. Не думаю, что они нам понадобятся, поэтому отключим их создание.

" Отключить создание файлов бекапа и свапа
set nobackup
set nowritebackup
set noswapfile

Теперь облегчим создание нового файла со скриптами на языке Python.

autocmd BufNewFile *.py call BufNewFile_PY()
autocmd BufNewFile *.pyw call BufNewFile_PY()

Ну а теперь сделаем автоматическое закрытие скобок (круглых, квадратных и фигурных). Для этого добавим следующие три строки:

" Автоматическое закрытие скобок
imap [ []<LEFT>
imap ( ()<LEFT>
imap < <><LEFT>

Суть их очень простая. Команда imap работает в режиме вставки (первая буква i - от слова Insert) и позволяет назначать выполнение команд при нажатии определенных клавиш.

Первая строка обозначает, что при нажатии клавиши "[" нужно написать два символа [] и сымитировать нажатие клавиши "влево". То есть при нажатии на клавишу [ вместо открывающейся скобки будет вставлена также и закрывающаяся, а курсор затем переместится на один символ влево, то есть окажется внутри скобок. Аналогично работают и следующие две строки, только для круглых и фигурных скобок соответственно.

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

" размеры окна
set lines=100
set columns=150

Это практически на весь экран при разрешении 1280x1024

Если вам не нравится раскраска кода по умолчанию, то ее можно переключать. Шаблоны с раскрасками лежат в папке X:\Program Files\Vim\vim72\colors и (или) X:\Program Files\Vim\vimfiles\colors

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

blue - это имя одного из файлов (без расширения) в папке colors. В итоге получим


Я для себя подправил одну из прилагающихся цветовых схем, и раскраска питона у меня выглядит следующим образом:


Чтобы установить ту же цветовую схему blue по умолчанию, в файл _vimrc добавляем строку:

или color _имя_понравившейся_вам_цветовой_схемы

К данному моменту сразу будет работать и автодополнение (в Vim они называются Omni Completion). Чтобы появились подсказки, нужно в режиме вставки поочередно нажать Ctrl-X, Ctrl-O. Выглядят они следующим образом:


Но чтобы было более привычно, как в других IDE, мы можем сделать так, чтобы Omni Completion появлялся при нажатии комбинации клавиш Ctrl-пробел. Для этого в _vimrc добавим всего одну строчку:

" Ctrl-пробел для автодополнения
inoremap <C-space> <C-x><C-o>

С помощью этой команды мы перенаправляем сочетание клавиш Ctrl-пробел на последовательное нажатие комбинаций клавиш Ctrl-x, Ctrl-o. В принципе, можно было бы воспользоваться уже знакомой нам командой imap, но отличие команды inoremap состоит в том, что при ее использовании, в отличие, от imap, отключается дальнейшие перенаправления клавиш, которые указываются во втором параметре.

Теперь можно сделать так, чтобы текущий буфер закрывался с помощью клавиши Ctrl-W.

"Ctrl-w - удаление текущего буфера
nmap <C-w> :bd<cr>
imap <C-w> <esc>:bd<cr>

Первая строка изменяет поведение Ctrl-w в нормальном режиме и при нажатии этой комбинации вызывает команду закрытия буфера (:bd)

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

Vim + Python

Для того, чтобы можно было бы запускать открытый в данный момент скрипт на языке Python, установим плагин runscript. Для этого скачиваем файл с плагином и просто копируем его в папку plugins.

Затем открываем плагин в текстовом редакторе и изменяем значение переменной s:PathToExecutable таким образом, чтобы он указывал на путь до интерпретатора Python. У меня, например, это выглядит следующим образом:

let s:PathToExecutable = 'c:\python25\python.exe'

Теперь для того, чтобы запустить открытый скрипт, нажимаем F12. Если ничего не произошло, нажимаем F9, тогда откроется еще один буфер, куда выводится результат работы скрипта. Перед запуском скрипта нужно не забыть выйти из режима вставки в нормальный режим с помощью клавиши Esc.

На следующем скриншоте пример запуска простенького скрипта:


У плагина runscript есть и дополнительные возможности для запуска скриптов, про них вы можете узнать или на странице плагина или в комментариях в самом плагине.

После этого будет полезно обновить файл, описывающий синтаксис Python для редактора. Обновленный файл синтаксиса расположен здесь, причем, там же есть и синтаксис для Python 3.0. Скачанный файл нужно скопировать в папку syntax.

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

syn match pythonError

и добавляем после этих строк следующие:

syn match pythonError "^\s*def\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*class\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*for\s.*[^:]$" display
syn match pythonError "^\s*except\s*$" display
syn match pythonError "^\s*finally\s*$" display
syn match pythonError "^\s*try\s*$" display
syn match pythonError "^\s*else\s*$" display
syn match pythonError "^\s*else\s*[^:].*" display
syn match pythonError "^\s*if\s.*[^\:]$" display
syn match pythonError "^\s*except\s.*[^\:]$" display
syn match pythonError "^\s*while\s.*[^\:]$" display
syn match pythonError "^\s*return\s.*:$" display
syn match pythonError "&&" display
syn match pythonError "||" display
syn match pythonError "[;]$" display
syn keyword pythonError do

Правда, себе я все-таки закомментарил строку

syn match pythonError "^\s*if\s.*[^\:]$" display

Потому что из-за нее Vim начинает считать ошибками многострочные логические выражения у оператора if.

На следующем скриншоте показан код с забытым символом двоеточия после оператора try:


Учим Vim понимать структуру кода

Теперь научим Vim строить список классов и методов классов в отдельном буфере, чтобы мы могли быстро перемещаться на нужный участок кода.

Затем скачиваем плагин для Vim под названием taglist

Установка этого плагина состоит из нескольких этапов.

  • Распаковываем плагин таким образом, чтобы файл из папки plugin оказался в папке plugin у Vim, а, соответственно, файл из папки doc - в папке doc.

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.

Перезапускаем Vim и теперь можем открыть какой-нибудь исходник. Теперь вводим команду ":TlistToggle". И слева у нас открывается структура нашего исходника:


При двойном щелчке по строке из левого списка мы перескакиваем на соответствующий элемент исходника.

Если вам не хочется каждый раз набирать команду ":TlistToggle", то можно повесить выполнение ее какую-нибудь горячую клавишу, например, Ctrl-t. Для этого достаточно добавить следующие строки в файл _vimrc:

" Ctrl-T - открыть окно ctags
nmap <C-t> :TlistToggle<cr>
imap <C-t> <esc>:TlistToggle<cr>i<right>

Теперь в нормальном режиме и режиме вставки вы можете открывать или прятать буфер со структурой исходника с помощью клавиши Ctrl-t.

Устанавливаем дополнительные плагины

Теперь для большего удобства установим некоторые дополнительные плагины

Дерево каталогов в окне Vim

Для построение дерева каталогов есть очень удобный плагин NERD Tree. Скачиваем архив с плагином и распаковываем его в папку с Vim (в архиве расположены две папки doc и plugin).

После этого строим теги для справки. Для этого делаем так, чтобы рабочей папкой стала папка doc и выполняем команду

Или можно проще независимо от текущей папки выполнить команду

Теперь вы можете смотреть справку по плагину, выполнив команду

А если вам не охота ее читать, то скажу, что дерево каталогов открывается с помощью команды

Внешний вид дерева показан на следующем скриншоте:


Плагин для удобного закомментаривания кода

  • Качаем плагин tComment.
  • Распаковываем куда-нибудь файл tComment.vba
  • Открываем этот файл в самом Vim
  • Вводим команду

После этого Vim что-то делает пару секунд, и плагин установлен. У tComment очень много возможностей, чтобы их посмотреть введите команду

С помощью этого плагина можно как комментарить строки кода, так и быстро их раскомментаривать.

Думаю, что для начала этих настроек должно хватить, но не исключено, что со временем эту статью я еще буду дополнять.

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

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

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

Настройка редактора Vim

Основной конфигурационный файл Vim находится в папке /etc/. Это файл /etc/vimrc/vimrc. Коме того, для каждого отдельного пользователя можно настроить Vi с помощью локального конфигурационного файла, который находится в домашней папке

/.vimrc. Вы можете использовать тот файл, который вам надо, например:

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

1. Отступы и нумерация строк

Если вы собрались программировать в Vi, то вам надо обязательно разобраться с отступами. В стандартах многих языков программирования рекомендуется использовать пробелы вместо табов, а каждый отступ оформлять фиксированным количеством пробелов, например, стандарт Python PEP-8 рекомендует использовать четыре пробела. Чтобы это настроить добавьте такие строки:

set expandtab
set smarttab
set tabstop=4
set softtabstop=4
set shiftwidth=4

Переменная expandtab включает замену табов на пробелы, tabstop - количество пробелов в одном обычном табе, softtabstop - количество пробелов в табе при удалении, smarttab - при нажатии таба в начале строки добавляет количество пробелов равное shiftwidth.

Чтобы добавить нумерацию строк добавьте такую команду:

Раз мы уже заговорили про отступы, давайте сделаем ещё небольшой отступ между левой частью окна:

2. Внешний вид

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

Для выбора цветовой схемы на постоянной основе добавьте в конфигурационный файл такую строчку

colorscheme имя_цветовой_схемы

Для многих языков программирования есть подсветка синтаксиса, чтобы её включить добавьте:

3. Звук

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

set noerrorbells
set novisualbell

4. Поддержка мыши

Если вы работаете в графическом окружении, то, возможно, вам понадобиться поддержка мышки. Поддержка может быть добавлена в несколько режимов работы программы:

  • n - обычный режим;
  • v - визуальный режим (режим выделения);
  • i - режим вставки;
  • c - режим командой строки;
  • a - все перечисленные ранее режимы;
  • r - для режима "Нажмите Enter" или запроса ввода информации.

В большинстве случаев чтобы включить мышку во всех режимах программы достаточно добавить такую строчку:

Также можно включить мышку только в визуальном режиме:

Или вовсе её отключить:

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

5. Настройка привязок

Очень полезная возможность Vim - это настройка своих привязок клавиш. Для этого существует функция map. Она похожа на alias в Linux и сообщает программе, что если мы вводим что-то, то хотим сделать ещё что-то. Здесь прежде чем переходить к настройке нужно понять как это работает. Синтаксис map простой:

map набор_символов_или_сочетание_клавиш на_что_заменить

Откройте редактор и выполните там команду:

:map losst <ESC>iHello world!<CR>

При вводе набора символов losst программа нажимает клавишу Esc, затем вводит i чтобы перейти в режим редактирования, потом пишет приветствие и добавляет символ перевода строки. Клавиши, которые надо нажать пишутся в скобках <>.

Мы рассмотрели общую команду map, но существуют также отдельные команды для других режимов:

  • nmap - нормальный режим;
  • vmap - визуальный режим;
  • omap - режим, когда выбран оператор действия (y,p или d);
  • cmap - режим командной строки;
  • imap - режим вставки.

Кроме того есть не рекурсивный вариант команды. Например, если на слово Hello назначить ещё одну замену, то в нашем примере она сработает. Но в не рекурсивном варианте всё равно будет вставлено Hello. Не рекурсивные варианты команды тоже есть для всех режимов, это noremap, vnoremap, nnoremap, onoremap, cnoremap и inoremap.

Но это ещё не всё. В начале пользовательских привязок клавиш принято использовать клавишу <leader> по умолчанию это обратный слеш. Например, если сделать вот так:

:map <leader>losst <ESC>iHello world!<CR>

Тогда для выполнения этой привязки надо набрать \losst. Использовать обратный слеш не всегда удобно, поэтому часто его заменяют на запятую. Для этого в конфигурационный файл надо добавить:

Теперь вы знаете как настроить привязки клавиш в vim и что это всё означает. Теперь можно добавить сочетание клавиш для быстрого сохранения:

Поиск дальше нажатием пробела:

Поиск предыдущего вхождения по нажатию Ctrl+Пробел:

Более удобное перемещение между открытыми вкладками редактора:

Включение или отключение проверки орфографии:

map <leader>ss :setlocal spell!<CR>

Таким образом, вы можете сделать более удобным и быстрым любое действие в редакторе.

6. Буфер обмена

Vim использует специальный внутренний буфер обмена для копирования и вставки текста, он никак не связан с системным. Постоянная проблема пользователей Vim в графическом интерфейсе, это невозможность что-либо скопировать непосредственно из визуального режима Vim в системный буфер обмена. Если окно редактора пусто, нет никаких дополнительных настроек или плагинов, можно просто копировать текст из терминала, но если запустить vim в tmux или screen, то тут уже возникнет проблема. Она решается. В Vim существуют специальные регистры для системного буфера обмена, это + и *. К ним можно получить доступ с помощью клавиши ".

Но сначала надо убедится, что ваша версия Vim поддерживает работу с системным буфером обмена. Для этого выполните:

vim --version | grep clipboard

Если вы видите надпись +clipboard, значит всё хорошо. В противном случае надо искать другую версию vim. В Ubuntu или Debian для поддержки буфера обмена можно установить пакет vim-gtk:

sudo apt install vim-gtk

Теперь, когда вы нажмете "+y в визуальном режиме, выделенный текст будет скопирован в системный буфер обмена, а при нажатии "+p в обычном режиме, содержимое буфера обмена будет вставлено в позицию курсора. Для большего удобства можно добавить горячие клавиши:

Теперь чтобы вставить из буфера vim будет достаточно нажать Ctrl+V, а для копирования в буфер обмена системы - Ctrl+C.

7. Настройка поиска

Давайте немного настроим поиск. Для того чтобы игнорировать регистр при поиске добавьте в конфигурационный файл:

set ignorecase
set smartcase

Подсвечивать результаты поиска:

Чтобы программа подсказывала первое вхождение при вводе шаблона поиска добавьте:

8. Команды

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

command опции имя действие

В качестве действия может быть указано выполнение какой-либо команды, нажатие клавиш, как в случае с привязками или вызов какой-либо функции. Это очень обширная тема, поэтому я не буду трогать её в этой статье.

Добавьте такую строчку чтобы с помощью команды :W можно было сохранить файл, если он открыт не через sudo:

command! W execute 'w !sudo tee % > /dev/null' <bar> edit!

9. Плагины

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

/.vim, подпапке pack/vendor/start или pack/vendor/opt. Файлы из подпапки start загружаются автоматически при старте программы, и из opt надо подгружать вручную.

Например, давайте установим такой популярный плагин, как NerdTree. Для этого просто склонируйте его с GitHub в эту папку:

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

vim -u NONE -c "helptags

/.vim/pack/vendor/start/nerdtree/doc" -c q

После этого вы можете запустить программу и набрать такую команду для активации панели выбора файлов:

Можно добавить горячую клавишу на открытие панели, для этого добавьте в конфигурационный файл:

nmap <F6> :NERDTreeToggle<CR>

Установим для примера ещё один плагин, Vim , который позволяет выполнять unix команды прямо в командной строке редактора:

vim -u NONE -c "helptags

/.vim/pack/vendor/start/eunuch/doc" -c q

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

10. Кодировка

Часто при открытии в Vim тестовых файлов с кириллическими символами, те отображаются неверно. Чтобы они отображались как надо следует выбрать кодировку UTF-8 по умолчанию:

Также можно установить стандарт использования символов переноса строки в файлах:

В данном случае на первом месте находится вариант Unix, где для переноса строки используется только символ \n.

Выводы

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

"Табы и пробелы
set expandtab
set smarttab
set tabstop=4
set softtabstop=4
set shiftwidth=4
"Нумерация строк и отступ
set number
set foldcolumn=2
"Цветовая схема
colorscheme delek
syntax on
"Без звука
set noerrorbells
set novisualbell
"Мышь
set mouse=a
"Привязки
let mapleader = ","
nmap <leader>w :w!<CR>
map <space> /
map <C-space> ?
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
map <leader>ss :setlocal spell!<CR>
inoremap <C-v> <ESC>"+pa
vnoremap <C-c> "+y
vnoremap <C-d> "+d
"Поиск
set ignorecase
set smartcase
set hlsearch
set incsearch
"Выход с sudo
command! W execute 'w !sudo tee % > /dev/null' <bar> edit!
"Кодировка
set encoding=utf8
"Тип переноса
set ffs=unix,dos,mac

Даже этот небольшой конфигурационный файл уже может сильно помочь вам в работе, а дальше останется только расширять его дополнительными командами и привязками клавиш. А какие команды и привязки используете вы? Какие плагины? Поделитесь в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

(10 оценок, среднее: 5,00 из 5)

Об авторе

7 комментариев

set nocompatible
filetype off

Plugin 'scrooloose/nerdtree'
Plugin 'valloric/youcompleteme'
Plugin 'xolox/vim-easytags'
Plugin 'majutsushi/tagbar'
Plugin 'tpope/vim-fugitive'
Plugin 'easymotion/vim-easymotion'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'scrooloose/nerdcommenter'
Plugin 'matze/vim-move'
Plugin 'raimondi/delimitmate'
Plugin 'mattn/emmet-vim'
Plugin 'scrooloose/syntastic'
Plugin 'tpope/vim-surround'
Plugin 'sirver/ultisnips'
Plugin 'honza/vim-snippets'
Plugin 'xolox/vim-session'
Plugin 'xolox/vim-misc'
Plugin 'SyntaxAttr.vim'
Plugin 'dyng/ctrlsf.vim'
Plugin 'rking/ag.vim'
Plugin 'godlygeek/tabular'

Plugin 'stanangeloff/php.vim'
Plugin 'sumpygump/php-documentor-vim'
Plugin 'arnaud-lb/vim-php-namespace'

Plugin 'damage220/solas.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'mhartington/oceanic-next'

set tabstop=4
set shiftwidth=4
set softtabstop=4

set autoindent
set smartindent

set encoding=utf-8
set termencoding=utf-8

set nocp
set nu
set laststatus=2
set ruler
set nowrap
syntax enable
set background=dark
colorscheme solas

set visualbell t_vb=
set novisualbell

let g:session_autosave = 'no'

set fileformat=unix
set statusline=%f%m%r%h%w\ %y\ enc:%\ ff:%\ fenc:%%=(ch:%3b\ hex:%2B)\ col:%2c\ line:%2l/%L\ [%2p%%]

опечатка
set colorscheme delek а должно быть colorscheme delek

"=============================================================================
"=============================== BASIC SETTINGS ==============================
"=============================================================================
filetype plugin indent on
highlight SpellBad ctermfg=Black ctermbg=Red
hi StatusLine gui=reverse cterm=reverse
set autoread
set backup
set browsedir=current
set clipboard=unnamed
set encoding=utf-8
set hidden
set history=128
set mouse=a
set nocompatible
set noswapfile
set sessionoptions=curdir,buffers,tabpages
set t_Co=256
set termencoding=utf-8
set title
set undolevels=2048

"=============================================================================
"============================== EDITOR SETTINGS ==============================
"=============================================================================
autocmd CursorMoved * silent! exe printf("match Search /\\/", expand(''))
let c_syntax_for_h=""
let python_highlight_all = 1
set backspace=indent,eol,start
set laststatus=2
set linebreak
set list
set listchars=tab:>-,trail:-
set mps+=
set noruler
set number
set scrolloff=4
set showcmd
set showmatch
set textwidth=80
set visualbell
set wrap
syntax enable

/.vim/colors/sublimemonokai.vim'))
silent !curl -fLo

"=============================================================================
"============================ INDENTATION SETTINGS ===========================
"=============================================================================
set autoindent
set expandtab
set pastetoggle=
set shiftwidth=4
set smarttab
set smartindent
set softtabstop=4
set tabstop=4
au FileType crontab,fstab,make set noexpandtab tabstop=8 shiftwidth=8
au FileType *.htm,*.html,*.css,*.js set softtabstop=2 tabstop=2 shiftwidth=2 textwidth=120

/.vim/autoload/plug.vim'))
silent !curl -fLo

Читайте также: