Красота требует настройки
Самая базовая и, вместе с тем, одна из самых важных модификаций для программы, в которой вы будете проводить более 90% своего рабочего времени — внешний вид. Если вы пользуетесь терминальным Вимом и уже настраивали консоль, то эти изменения должны отобразиться и на самом редакторе, но можно пойти и дальше. Начнём с выбора темы.
Так наш подопечный (MacVim) выглядит сейчас:
Выбор темы
Для Вима силами волонтёров было написано немеренно готовых тем. Из большинства популярных редакторов их давно уже всех портировали. Как по мне, главная отличительная особенность Sublime Text — его тема , которую мы сейчас вероломно апроприируем.
Улучшенная строка состояния
Теперь давайте настроим наш status bar. Основная идея состоит в том, чтобы красиво показывать важную информацию по аналогии с tmux и панелями в WM на экране, касающуюся редактирования текста. Для этого давайте поставим :
Про Powerline мы поговорим далее, но главное, чего мы этим добьёмся, — секции строки состояния будут выделяться не прямоугольниками, а стрелками. Про Keymap мы поговорим в секции про интеграцию русского языка, но эта комманда просто скроет его индикатор из строки статуса (аналог останется в строке команд). Символ — это красивая альтернатива «ln», но также мною был опущен процентный показатель конца файла, ибо мне он показался излишним.
Вид Airline по умолчанию:
Вид после нашего вмешательства:
Шрифт и иконки
Как видите, мы сделали только хуже. Проблема заключается в том, что вам нужно установить в ваш терминал или gui шрифты с поддержкой . Для первого воспользуйтесь настройками самой консоли, а для второго это командой:
Но не спешите сейчас ставить полюбившийся вам шрифт из того списка. Во-первых, подобных шрифтов в природе больше и их можно патчить самому. Например, мой любимый — это , который поддерживает лигатуры (о них можете почитать там же). Во-вторых, есть ещё один отличный плагин , который добавляет в Airline и Nerdtree (файловый проводник) удобные иконочки.
Но и они не работают.
И подключим его так (в GUI. И да, «фура» тут намеренно):
Теперь все наши элементы кастомизации должны встать на место:
Стандартные опции
Таким образом мы осветили самые важные аспекты кастомизации внешнего вида Вим. Подробнее про работу этих плагинов можно почитать либо в их мануалах (через команду ) или на их страницах на гитхабе (ищутся в Гугл по имени из списка плагинов). Далее будут указаны другие полезные команды, а после этого мы перейдём к следующей большой теме:
Настраиваем кодировки
Если в только что установленном Vim открыть скрипт в кодировке UTF-8, то, по крайней мере в Windows, мы увидим крокозяблы вместо русских букв:
Чтобы переключить кодировку на правильную UTF-8, вводим команду в командной строке редактора:
:e ++enc=utf8
В результате получаем читаемые комментарии на русском языке:
Каждый раз вводить эту команду не интересно, поэтому добавим новый пункт меню, с помощью которого можно будет переключать кодировки
Для этого идем в папку, где установлен Vim и ищем файл _vimrc в Windows или .vimrc в linux. В Windows он расположен по адресу X:\Program Files\Vim. Заметьте, что сам (g)Vim расположен по адресу X:\Program Files\Vim\vim72
» Меню выбора кодировки текста (utf8, cp1251, koi8-r, cp866)menu Кодировка.utf-8 :e ++enc=utf8 <CR>menu Кодировка.windows-1251 :e ++enc=cp1251<CR>menu Кодировка.koi8-r :e ++enc=koi8-r<CR>menu Кодировка.cp866 :e ++enc=cp866<CR>
Как видите, свое меню создавать очень легко. Строка <CR> обозначает нажатие Enter, а комментарии начинаются с двойной кавычки.
Теперь мы можем вручную переключать кодировки:
Но вручную переключать кодировки не интересно, поэтому сделаем так, чтобы Vim сам пытался определять нужную кодировку. Для этого достаточно добавить всего одну строку в _vimrc:
» Список используемых кодировок для автоматического их определенияset fileencodings=utf-8,cp1251
Параметру fileencodings присваиваем список используемых в повседневной жизни кодировок. Теперь при открытии файла все сразу будет выводиться в правильной кодировке.
Теперь нам осталось исправить одно маленькое недоразумение, которое состоит в том, что Vim может не признавать русские буквы за буквы, из-за чего не будут корректно работать команды, связанные с выделением слов (например, перемещение к следующему или предыдущему слову). Исправить это легко. Достаточно в файл _vimrc добавить строку:
set iskeyword=@,a-z,A-Z,48-57,_,128-175,192-255
Здесь мы перечисляем какие символы и их коды Vim должен считать за буквы. Диапазон 48-57 соответствует цифрам, 128-175 — части русских букв в кодировке DOS (866), а 192-255 охватывает оставшиеся русские буквы в кодировке DOS и все русские буквы в кодировке Windows-1251.
Плагин управления файлами NERDTree из VIM и общий плагин vim-nerdtree-tabs
А. Установка и основное использование
Установить NERDTree и vim-nerdtree-tabs с помощью инструмента управления плагином VIM Vundle очень просто, просто добавьте путь к плагину в конфигурацию пакета, добавьте две строки
Plugin ‘scrooloose/nerdtree’ Plugin ‘jistr/vim-nerdtree-tabs’
Github-путь к NERDTree и vim-nerdtree-tabs может быть запрошен вами
Конфигурация следующая
1 2 3 4 5 6 7 8 |
Плагин управления set rtp+=$VIM\vimfiles\bundle\Vundle.vim\ call vundle#begin() Plugin ‘VundleVim/Vundle.vim’ Plugin ‘scrooloose/nerdtree’ Plugin ‘jistr/vim-nerdtree-tabs’ call vundle#end() |
Откройте gvim и запустите: BundleInstall
Некоторые основные сочетания клавиш NERDTree
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
?: Документ быстрой справки o: открыть каталог или файл, создать буфер, также можно использовать для открытия закладок go: открыть файл, но курсор остается в NERDTree, буфер создан t: открыть файл, вкладка создана, и это также относится к закладкам T: открыть файл, но курсор остается в NERDTree, вкладка создана, и она также работает для закладок я: разделить окно, чтобы создать файл по горизонтали, создав буфер gi: разделить окно созданного файла по горизонтали, но курсор остается в NERDTree s: разбить окно созданного файла по вертикали, буфер создан gs: похоже на gi, go x: свернуть текущий открытый каталог X: свернуть все открытые каталоги e: открыть выбранный каталог с помощью управления файлами D: удалить закладку P: заглавная, перейти к текущему корневому пути p: строчные буквы, переход к пути над курсором K: перейти к первому подпути J: Перейти к последнему подпути <C-j> и <C-k>: перемещаться между каталогами и файлами на одном уровне, игнорируя подкаталоги и подфайлы C: установить корневой путь к каталогу, в котором находится курсор u: установить родительский каталог в качестве корневого пути U: Установить родительский каталог, чтобы следовать пути, но оставить исходный каталог открытым r: обновить каталог, в котором находится курсор R: обновить текущий корневой путь Я: показывать или не показывать скрытые файлы f: открыть и закрыть фильтр файлов q: закрыть NERDTree A: Показать NERDTree в полноэкранном режиме или закрыть полноэкранный режим. |
Б. Добавьте конфигурацию NERDTree в файл настроек запуска vim _vimrc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
«Закрыть NERDTree ярлык map <leader>t :NERDTreeToggle<CR> «Показать номер строки let NERDTreeShowLineNumbers=1 let NERDTreeAutoCenter=1 «Показать скрытые файлы let NERDTreeShowHidden=1 «Задать ширину let NERDTreeWinSize=21 «При запуске vim в терминале, поделитесь NERDTree let g:nerdtree_tabs_open_on_console_startup=1 «Игнорировать отображение документа let NERDTreeIgnore= «Показать список закладок let NERDTreeShowBookmarks=1 |
3.Вы завершили настройку
Файл конфигурации YouCompleteMe является.ycm_extra_conf.py, Этот файл определяет поведение YCM при завершении языка C / C ++. Файл конфигурации шаблона по умолчанию должен находиться по следующему пути:
Если вы просматриваете папку YouCompleteMe и обнаруживаете, что папки cpp нет, вы можете самостоятельно создать путь cpp / ycm, а затем скопировать .ycm_extral_conf.py по указанному выше пути. Для YCM при открытии файла кода плагин будет искать вверх по пути, в котором находится файл. Если будет найден первый файл конфигурации, он будет сразу считан. Если вы продолжите поиск до тех пор, пока корневой каталог не сможет найти файл конфигурации, завершение синтаксиса не будет включено. Можно видеть, что файл конфигурации в каталоге, где расположен файл, имеет самый высокий приоритет, а корневой каталог имеет самый низкий приоритет. Лучший способ использовать его — создать файл конфигурации в каждом проекте или классифицировать проект в соответствии с языком и создать файл конфигурации в каждой языковой папке. Здесь мы используем другой метод, в.vimrcКонфигурация .ycm_extral_conf.py в файле обеспечивает глобальную поддержку системы, то есть, когда в пути к коду не найдено никакого файла конфигурации, используется файл конфигурации по умолчанию, который мы установили. в.vimrcДобавьте следующий код:
На данный момент мы завершили установку и настройку YoucompleteMe.
Установка и обновление плагинов
Теперь просто нужно сказать vundle установить все плагины, которые вы добавили в файл. Запустите vim:
Теперь выполните команду:
Это откроет новое разделенное окно в vim и запустит установку каждого из плагинов. Когда процесс будет завершен, вы сможете закрыть новый буфер и окно, введя:
Все плагины, добавленные в ~/.vimrc, теперь установлены.
Чтобы обновить плагины, используйте одну из этих команд:
Восклицательный знак в конце:PluginInstall! говорит vundle переустановить все плагины, чтобы получить их самые новые версии.
После обновления вы можете увидеть, какие плагины обновились, набрав «u» в окне плагина vundle. Если вы хотите просмотреть весь журнал операций, которые произошли во время обновления или установки, введите l.
Соглашения по оформлению плагинов
Для демонстрации возьмем скрипт, написанный в . Напомню, что он предназначен для работы со списками дел (ToDoList) и его исходник выглядит следующим образом.
function! sNextStatus() range
for n in range (afirstline, alastline)
let line = getline (n)
if line =~ ‘\CTODO’
let line = substitute (line, ‘\CTODO’, ‘INPROGRESS’, «g»)
elseif line =~ ‘\CINPROGRESS’
let line = substitute (line, ‘\CINPROGRESS’, ‘DONE’, «g»)
elseif line =~ ‘\CDONE’
let line = substitute (line, ‘\CDONE’, ‘TODO’, «g»)
endif
call setline (n, line)
endfor
endfunctioncommand! -range NextStatus <line1>,<line2>call sNextStatus()
Исходник
В первую очередь надо убедиться, что все функции скрипта, которые не должны интересовать пользователя, должны быть для него недоступны, и вообще быть доступны только в пределах скрипта. Для таких функций нужно добавить префикс s:, что заодно уменьшит вероятность того, что ваша функция начнет конфликтовать из-за имени с другим плагином. Этому условию наш скрипт удовлетворяет.
Теперь дадим возможность пользователю не загружать наш плагин. Это может быть полезно, если он не является админом на своем компьютере. Сделать это очень просто. Заведем глобальную (!) переменную, которая будет обозначать загружен ли наш плагин (значение переменной при загрузке скрипта станет равным 1) или нет. И в случае, если значение этой переменной будет равно 1, то больше этот плагин не загружать. Так как переменная будет глобальная, то надо аккуратнее подходить к выбору ее имени, чтобы оно более точно описывало наш плагин.
Дополним пример
if exists(«todo_loaded»)
finishendiflet todo_loaded = 1function! sNextStatus() range
for n in range (afirstline, alastline)
let line = getline (n)
if line =~ ‘\CTODO’
let line = substitute (line, ‘\CTODO’, ‘INPROGRESS’, «g»)
elseif line =~ ‘\CINPROGRESS’
let line = substitute (line, ‘\CINPROGRESS’, ‘DONE’, «g»)
elseif line =~ ‘\CDONE’
let line = substitute (line, ‘\CDONE’, ‘TODO’, «g»)
endif
call setline (n, line)
endfor
endfunctioncommand! -range NextStatus <line1>,<line2>call sNextStatus()
Исходник
Что нам это дало? Теперь пользователь может прописать в своем файле настроек .vimrc/_vimrc следующую строку, и наш плагин у него загружаться не будет:
let todo_loaded = 1
Исходник
Все условия, которые касается программирования, мы теперь выполнили, теперь осталось документировать наш плагин. Для этого достаточно добавить всего несколько строчек комментариев:
» File: todo_next.vim
» Author: Evgeniy Ilin aka Jenyay <jenyay {at} jenyay.net>
» Description: Плагин для последовательного переключения статуса задач в TodoList
» Version: 1.1
» Commands: NextStatusif exists(«todo_loaded»)
finishendiflet todo_loaded = 1function! sNextStatus() range
for n in range (afirstline, alastline)
let line = getline (n)
if line =~ ‘\CTODO’
let line = substitute (line, ‘\CTODO’, ‘INPROGRESS’, «g»)
elseif line =~ ‘\CINPROGRESS’
let line = substitute (line, ‘\CINPROGRESS’, ‘DONE’, «g»)
elseif line =~ ‘\CDONE’
let line = substitute (line, ‘\CDONE’, ‘TODO’, «g»)
endif
call setline (n, line)
endfor
endfunctioncommand! -range NextStatus <line1>,<line2>call sNextStatus()
Исходник
В принципе, верхний заголовок может содержать любые разделы (первое слово после символа комментария, за которым идет двоеточие, Vim его будет выделять цветом), но очень желательно вписать туда описание плагина в раздел Description, автора, версию плагина и дату последней правки. Некоторые авторы туда пишут список изменений в каждой версии программы. В общем, сюда вы можете писать все, что вы считаете важным про ваш плагин.
Вообще-то, желательно эти комментарии писать на английском языке, но я, чтобы не позориться со своим английским, описание написал по-русски.
Русский ферштейн?
Наверное, самый главный отталкивающий фактор в освоении Вима, с которым сталкиваются все русскоговорящие программные инженеры — Русский язык. Не то, чтобы у меня была какая-то неприязнь к великому и могучему, но она есть у нашего редактора, причём ко всем языкам, отличным от Английского.
Вим обходит системные драйвера клавиатуры и сам обрабатывает ввод. Хорошая новость состоит в том, что это делает его самым быстрым и отзывчивым редактором среди конкурентов. Плохая новость — он считывает не нажатие клавиши, а введённые символы. Результирует это в том, что команды нормального режима (и много что ещё) на других раскладках не работают.
Лекарство для этой болезни искали люди давно, так как вечно ручками дёргать язык ввода неудобно. Когда появились более близкие к системе штуки, такие как gVim и MacVim, они тоже не справились (и не особо пытались). Поэтому на данный момент есть пара костылей:
Langmap
Наверное, при поиске решения в интернете, вы натыкались на строчки подобного характера:
Это очень лобовой способ. Он просто ставит соотвествие между русскими символами и английскими в нормальном режиме. Очевидно, что другие режимы остаются за бортом, а для менее традиционных раскладок эту штуку придётся пилить самостоятельно.
Keymap
Существует чуть более адекватный стандартный способ переключения раскладки:
Теперь вам просто нужно при входе в редактор удостовериться, что системная раскладка — английский и… научиться переключать язык по … Да, это сочетание клавиш можно переназначить. Нет, не на ту же комбинацию клавиш, что и системое переключение.
Помимо того, что вам придётся привыкать к переключению языка разными командами в разных программах, он также не работает в режиме замены. Но это универсальный, кроссплатформенный способ, а как скрыть отображение текущего (и скорее всего единственного) Keymap мы уже рассмотрели.
Xkb-switch
А теперь победным маршем добавим эти строчки в конфиг:
И все ваши проблемы решены. В основном потому что мы это сделали заранее. Помните строчку из настройки Airline, упоминавшую Xkb-switch? По дефолту наш статус бар показывает номер текущей раскладки, но (по крайней мере у меня) это заставляло скроллинг в Виме безбожно зависать вплоть до полной остановки работы, поэтому мы это просто отключили.
Теперь наш верный друг должен работать с разными раскладками как любой другой современный редактор. При переходе в режим вставки Xkb-switch будет переключать раскладку с английской, на последнюю, вами использованную и vice versa. Также он умеет автоматически адаптировать ваши сочетания клавиш под новые раскладки. Однако командный режим и режим замены снова за бортом.
Hotkeys
— insert — режим ввода/редактирования
— выйти из режима редактирования/визуального режима (можно применять нужное кол-во раз)
— удалить слово
— удалить строку
— удалить всё от текущего месторасположения курсора до конца строки
— удалить всё от текущего месторасположения курсора до начала строки
— прыгнуть на 15 строку и удалить всё, начиная с 15 строки, до начала файла (dG — до конца файла)
— удалить все символы в строке от текущего месторасположения до символа одинарной кавычки (можно использовать любой символ)
— удалить 5 строк
— удалить 5 слов
Символ удаления можно комбинировать с поиском. Например, чтобы удалить все от курсора до конкретного слова, жмем , открываем поиск с помощью , пишем слово, до которого удаляем.
— скопировать строку (никто не отменял копирование через контестное меню)
— скопировать слово
— скопировать 10 строк
— вставить после курсора (не всегда удобно)
— вставить до курсора
— выйти из файла
— выйти из файла жестко, без сохранения изменений
— сохранить файл
— сохранить файл и выйти
— перейти в визуальный режим
— отменить действие (undo)
— return или undo undo (повторить действие)
— передвижение по vim
— начало строки (вернуться к первому не пустому символу в строке)
— вернуться в самое начало строки
— вернуться в конец строки
— вернуться в конец строки и открыть режим редактирования
— вернуться в начало строки и открыть режим редактирования
— прыгнуть на следуюущую строку и перейти в режим редактирования
— передвижение на одно слово вперед
— передвижение от пробела к пробелу (через слово)
— передвижение назад, от слова к слову
— передвижение назад, от пробела к пробелу
— прыгнуть в начало файла
— прыгнуть в конец файла
— прыгнуть на нужную строку (для gg аналогично)
— передвинуть курсор на 55 строку
— листать постранично вниз
— листать постранично вверх
— при нахождении на строке, которая расположена в нижней части терминала, поднимаем эту строку на самый верх
— аналогично предыдущему, но поднимаем строку на середину
— поиск (здесь лучше сразу обратить внимание на инкрементальный режим, т.е. поиск в реальном времени)
В поиске есть история — работает нажатием вверх или вниз (по аналогии с :). Для передвижения по результатам поиска жмем и
— поиск в обратную сторону, по аналогии с
— повторить предыдущую команду
— замена в строке
— замена во всем файле (если слово в строке встречается дважды, добавьте g, либо установите set gdefault
— сдвинуть строку вправо
— сдвинуть строку влево
— сдвинуть 12 строк вправо (аналогично влево)
— вертикальный сплит
— горизонтальный сплит
— изменить размер текущего сплита
— изменить размер для горизонтального сплита
— свернуть код
— открыть несколько файлов в разных вкладках
— открыть файл в новой вкладке
) — перейти на следующую вкладку
— перейти на предыдущую вкладку
— закрыть вкладку
— перейти на первую вкладку
— перейти на последнюю вкладку
— открыть список доступных вкладок
— прыгнуть на последнюю открытую вкладку
— скопировать содержимое текущей вкладки в новую вкладку и перейти на неё
— закрыть все вкладки, кроме текущей
или — показать все буферы во вкладках
— посмотреть буферы
— открыть историю буферов
— закрыть всё
— выполнить shell команду из vim
— запустить python код (по аналогии с !ls)
Чтобы добавить вывод команды, запущенной из под vim, в файл, выполняем:
Комментируем несколько строк в визуальном режиме:
- — переходим в визуальный режим ( — выделить всю строку)
- выделяем нужное кол-во строк с помощью указателей ( или )
- — переходим в режим вставки, пишем символ решетки (а, например, если нужно удалить по символу в каждой из выделенных строк, жмем )
- — возвращаемся в обычный режим (видим результат)
— открыть сохраненную сессию
NERDTree
-
Показать дерево каталогов
-
Установка: Или установите через Vundle:
-
Использование:? : Откройте справочный документ и снова нажмите для выхода из справочного документа
1. Добавить и удалить файлы
r / R: обновить каталог / корневой каталог, где находится курсор m: открыть каталог (для файловых операций)
Ма: Новый файл в текущей папке (каталог добавляется после имени /) мм: переименовать / переместить текущий файл md: удалить текущий файл mc: скопировать текущий файл в другое место . , , , , , , , , Проверьте это снова. , , , , , , , ,
2. Откройте файл
o / go: открыть файл в виде буфера, курсор все еще остается в ботаническом дереве s / gs: открывается вертикальный разделенный экран, последний курсор находится в nerdtree 3. Операции с каталогами O: рекурсивно открыть текущий каталог X: Рекурсивно близкие подкаталоги x: убрать родительский каталог
CD: изменитьВыбранный каталог естьТекущий каталог C: ИзменитьВыбранный каталогестьКорневой каталог(Корневой каталог только для NERDTree) CD: изменитьТекущий каталогестьКорневой каталог U / U: будетРодительский каталогУстановите вКорневой каталог, U остается открытым
4. Каталог движения P (большой): перейти в корневой каталогp (маленький): перейти в родительский каталогK: Перейти к первому каталогу на том же уровнеJ: Перейти к последнему каталогу на том же уровне
Конфигурация .vimrc
Объединение Vim с системой контроля версий Git
Контроль версий очень важен для разработчиков, и Git, вероятно, лучшая система для этого. Компилируя код Python, интерпретатор создает ряд временных файлов, таких как __pycache__ и * .pyc. Изменения этих файлов не нужно отслеживать в Git. Чтобы игнорировать их, Git предлагает функцию так называемого файла .gitignore. Создайте этот файл в своей ветке разработки, управляемой Git, со следующим содержимым:
*.pyc __pycache__
Кроме того, добавьте файл README для своего проекта, чтобы задокументировать его содержание. Независимо от того, насколько мал ваш проект, файл README помогает вам (и другим) запомнить, для чего предназначен код. Запись этого файла в формате Markdown особенно полезна, если вы синхронизируете свой код Python с вашим репозиторием на GitHub. Файл README автоматически преобразуется в HTML, который затем можно легко просмотреть в вашем веб-браузере.
Vim может напрямую сотрудничать с Git, используя специальные плагины. Среди прочих есть vim-fugitive, gv.vim и vimagit. Все они доступны на Github и в основном в виде пакета для Debian GNU и Linux.
После загрузки vim-fugitive через apt-get его необходимо активировать аналогично тому, как это делалось ранее с другими плагинами:
$ vim-addons install fugitive Info: installing removed addon 'fugitive' to /home/frank/.vim Info: Rebuilding tags since documentation has been modified ... Processing /home/frank/.vim/doc/ Info: done
Этот плагин работает только с файлами, отслеживаемыми с помощью Git. Становится доступным большое количество дополнительных команд Vim, таких как :Gedit, :Gdiff, :Gstatus, :Ggrep и : \Glog. Как указано на веб-сайте проекта, эти команды Vim соответствуют следующим командам и действиям Git:
- :Gedit: отредактировать файл в индексе и записать в него для внесения изменений.
- :Gread (git checkout – filename): загрузить содержимое файла в текущий буфер.
- :Gwrite (git add): добавить файл в список отслеживаемых файлов.
- :Gdiff (git diff): вывести поэтапную версию файла рядом с версией рабочего дерева и использовать. Возможности Vim по обработке различий для постановки подмножества изменений файла.
- :Gmove (git mv): переместить файл в новое место.
- :Gstatus (git status): показать текущий статус вашего каталога Git.
- :Gcommit (git commit): зафиксируйте свои изменения.
- :Ggrep (git grep): поиск данного шаблона в репозитории Git.
- :Glog (git log): загружает все предыдущие версии файла в список быстрых исправлений, чтобы вы могли перебирать их и наблюдать за развитием файла.
- :Gblame (git blame): показывает, кто последний раз вносил изменения в файл.
Учим Vim понимать структуру кода
Теперь научим Vim строить список классов и методов классов в отдельном буфере, чтобы мы могли быстро перемещаться на нужный участок кода.
Для этого, во-первых, нам понадобится маленькая программа под названием ctags. Скачать ctags под вашу операционку можно с официального сайта. Скачиваем нужный архив и устанавливаем ее куда нам удобно. Я, например, установил ее в c:\Program Files\ctags
Затем скачиваем плагин для Vim под названием taglist
Установка этого плагина состоит из нескольких этапов.
-
Распаковываем плагин таким образом, чтобы файл из папки plugin оказался в папке plugin у Vim, а, соответственно, файл из папки doc — в папке doc.
- Вы можете добавить путь до ctags в переменную окружения PATH, а можете добавить в файл _vimrc следующую строку:
let Tlist_Ctags_Cmd='»C:\Program Files\Ctags\ctags.exe»‘
Естественно, путь до ctags у васдолжен быть свой
Обратите внимание на вложенные двойные кавычки. Это нужно для того, чтобы Windows понял строку C:\Program Files\Ctags\ctags.exe как путь до программы ctags.exe, а не остановился на пробеле в имени папки.
-
Затем мы должны сделать так, чтобы при открытии Vim в качестве рабочей директории была бы папка doc. Так как мы уже сделали так, чтобы vim изменял рабочую директорию при открытии файла, то достаточно с помощью vim открыть любой файл в папке doc.
- Теперь вводим команду «:helptags .» Не забудьте про точку в конце. Немного подумав, плагин дополнит файл tags в папке doc.
Перезапускаем Vim и теперь можем открыть какой-нибудь исходник. Теперь вводим команду «:TlistToggle». И слева у нас открывается структура нашего исходника:
При двойном щелчке по строке из левого списка мы перескакиваем на соответствующий элемент исходника.
Если вам не хочется каждый раз набирать команду «:TlistToggle», то можно повесить выполнение ее какую-нибудь горячую клавишу, например, Ctrl-t. Для этого достаточно добавить следующие строки в файл _vimrc:
» Ctrl-T — открыть окно ctagsnmap <C-t> :TlistToggle<cr>imap <C-t> <esc>:TlistToggle<cr>i<right>
Теперь в нормальном режиме и режиме вставки вы можете открывать или прятать буфер со структурой исходника с помощью клавиши Ctrl-t.
конечный эффект
.vimrc
Наконец, поставьте обычно используемыйКонфигурация файла размещена для ознакомления читателям. Заинтересованные читатели могут перейтиМой гитхабСкачать дальше.
Справка
- Building-Vim-from-source
- Как самостоятельно скомпилировать и установить vim 8.0
- github: vim-pathogen
- github: Vundle.vim
- YouCompleteMe A code-completion engine for Vim
- Изучите VIM со мной — коллекция плагинов vim
- vim найти / заменить строку
- Разделенное окно с трюком в VIM
- Многооконное редактирование в Vim
- VIM выбрать текстовый блок / скопировать / вставить
- ultisnips
- vimtex
- Auto-call auto-completion v2
- anyone_else_abusing_ultisnips?
- vim-airline
- dotfiles
- vim-latex-live-preview
- fugitive-vim-working-with-the-git-index
- vimcasts.org
- Плагин Vim powerline не имеет цвета
- Creating a new file or directory in Vim using NERDTree
- Using Spell Checking in Vim
- Практические рекомендации по плагину Vim (2017)
- Инструкция по tmux
Управление плагинами
Теперь, когда вы узнали, как устанавливать плагины, давайте рассмотрим некоторые другие функции, которые помогут вам получить больше от vundle.
Добавление новых плагинов
Одной из наиболее полезных функций vundle является возможность находить и устанавливать дополнительные плагины.
Запросить список плагинов, которые vundle может найти на сайте Vim Scripts, можно с помощью одной из команд:
Восклицательный знак в конце второй команды обновляет локальный список с сайта Vim Scripts.
Если вы хотите найти определенный плагин, вы можете использовать тот же синтаксис:
Это откроет новое окно с результатами вашего запроса. Если вы недавно обновили локальную базу данных, вы можете убрать «!» из команды. К примеру, если вы ищете markdown , вы увидите что-то вроде этого:
Как видите, вы можете легко установить любой из плагинов, выбрав строку с этим плагином и набрав «i».
Это позволит загрузить и установить плагин, но не обновит файл ~/.vimrc (чтобы он автоматически загружался).
Итак, чтобы установить плагин MarkdownFootnotes, нужно переместить курсор к этой строке и нажать «i»:
Вы можете удалить буфер vundle после установки:
Затем отредактируйте ~/.vimrc:
Добавьте строку с новым плагином:
Сохраните и закройте файл.
Управление установленными плагинами
Чтобы просмотреть список установленных плагинов, введите:
Если вам нужно удалить плагин, это необходимо выполнить в два этапа.
Вы можете удалить файлы плагинов, выбрав их, а затем нажав клавишу «D», когда курсор находится на плагине, который вы хотите удалить. К примеру, чтобы удалить плагин «MarkdownFootnotes», нужно выбрать его и нажать «D»:
На данный момент vundle все еще видит этот плагин в конфигурации, но файлы плагина уже не установлены. Вы можете снова установить файлы, набрав:
Сейчас мы этого делать не будем. Вместо этого мы удалим запись из файла ~/.vimrc:
Это полностью удалит плагин из системы.
Более простой способ сделать это – сначала удалить его из файла ~/.vimrc.
После вы можете вызвать эту команду, которая автоматически удалит любые плагины, которые не находятся в файле .vimrc:
Введите Y, чтобы подтвердить удаление файлов.
Vim + Python
Для того, чтобы можно было бы запускать открытый в данный момент скрипт на языке Python, установим плагин runscript. Для этого скачиваем файл с плагином и просто копируем его в папку plugins.
Затем открываем плагин в текстовом редакторе и изменяем значение переменной s:PathToExecutable таким образом, чтобы он указывал на путь до интерпретатора Python. У меня, например, это выглядит следующим образом:
let s:PathToExecutable = ‘c:\python25\python.exe’
Теперь для того, чтобы запустить открытый скрипт, нажимаем F12. Если ничего не произошло, нажимаем F9, тогда откроется еще один буфер, куда выводится результат работы скрипта. Перед запуском скрипта нужно не забыть выйти из режима вставки в нормальный режим с помощью клавиши Esc.
На следующем скриншоте пример запуска простенького скрипта:
Недостатком такого способа запуска скриптов является то, что сообщения об ошибках выводятся вместе с выводом скрипта в тот же буфер, но разбор ошибок не производится, и нельзя, дважду щелкнув на ошибку, сразу перескочить на проблемную строку.
После этого будет полезно обновить файл, описывающий синтаксис Python для редактора. Обновленный файл синтаксиса расположен здесь, причем, там же есть и синтаксис для Python 3.0. Скачанный файл нужно скопировать в папку syntax.
Кроме того здесь описан способ, с помощью которого можно заставить Vim прямо во время набора текста подсвечивать типичные ошибки вроде забытого символа двоеточия. Для этого в только что скаченном файле находим строки, начинающиеся с
syn match pythonError
и добавляем после этих строк следующие:
syn match pythonError «^\s*def\s\+\w\+(.*)\s*$» displaysyn match pythonError «^\s*class\s\+\w\+(.*)\s*$» displaysyn match pythonError «^\s*for\s.*$» displaysyn match pythonError «^\s*except\s*$» displaysyn match pythonError «^\s*finally\s*$» displaysyn match pythonError «^\s*try\s*$» displaysyn match pythonError «^\s*else\s*$» displaysyn match pythonError «^\s*else\s*.*» displaysyn match pythonError «^\s*if\s.*$» displaysyn match pythonError «^\s*except\s.*$» displaysyn match pythonError «^\s*while\s.*$» displaysyn match pythonError «^\s*return\s.*:$» displaysyn match pythonError «&&» displaysyn match pythonError «||» displaysyn match pythonError «$» displaysyn keyword pythonError do
Правда, себе я все-таки закомментарил строку
syn match pythonError «^\s*if\s.*$» display
Потому что из-за нее Vim начинает считать ошибками многострочные логические выражения у оператора if.
На следующем скриншоте показан код с забытым символом двоеточия после оператора try:
Ссылки
настройка vim и управление установкой плагина (супер подробно)Использовать плагин taglistВим показывает, что китайский искаженУдобное управление плагином Vim (с использованием подмодуля git и патогена)Инструмент управления плагином Vim: патоген
Перепечатка, пожалуйста, укажите автора Джейсон Дин и его источникДомашняя страница блога GitCafe (http://jasonding1354.gitcafe.io/)Домашняя страница блога Github (http://jasonding1354.github.io/)Блог CSDN (http://blog.csdn.net/jasonding1354)Домашняя страница Цзяньшу (http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)Baidu поиск jasonding1354, чтобы зайти на главную страницу моего блога