gVim и несколько языков программирования - PullRequest
15 голосов
/ 10 сентября 2009

Моя дневная работа связана с программированием на Perl. Дома я играю с Питоном и Эрлангом. Для Perl я хочу сделать отступ для моего кода с двумя пробелами. Принимая во внимание, что для Python стандартом является 4. Также у меня есть некоторые привязки клавиш для открытия объявлений функций, которые я хотел бы использовать со всеми языками программирования. Как этого добиться в gVim?

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

Ответы [ 4 ]

24 голосов
/ 10 сентября 2009

В вашем $ HOME создайте каталог .vim / (или vimfiles / в Windows), в нем создайте каталог ftplugin / и в нем сохраните файлы с именем "perl.vim" или "python.vim" или "html.vim". "или ...

Они должны загружаться автоматически при открытии / создании нового файла с указанным типом файла, если вы не забыли добавить :filetype plugin on в свой .vimrc (или _vimrc под windows)

Затем параметры vim должны быть определены с :setlocal (а не :set, иначе их определение переопределит глобальную настройку по умолчанию).

Отображения определяются с помощью :n/i/v(nore)map <buffer>, а также сокращений. Команды определяются с помощью опции -b. Меню не может быть сделано локально без помощи плагина.

local, <buffer> и -b важны для предотвращения побочных эффектов.

22 голосов
/ 10 сентября 2009

Вы можете сделать это, используя типы файлов ... например, добавьте это в свой vimrc (и измените соответствующим образом для разных языков):

autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab
7 голосов
/ 10 сентября 2009

В дополнение к ответу rangerchris, вы можете рассмотреть возможность использования моделинов. Моделинцы рассказывают редактору, как его настроить:

#!/usr/bin/perl
# vi: ts=4 sw=4 ht=4 et textwidth=76 :

use strict;
use warnings;

print "hello world\n";

Эта модельная строка указывает vi использовать 4-символьные табуляции и автоотступы, использовать пробелы вместо табуляции и вставлять новую строку, когда курсор достигает 76 символов.

Вы можете контролировать, как Vim читает моделины с двумя переменными (наиболее вероятно, установленными в вашем .vimrc):

set modeline
set modelines=5

Переменная modeline указывает Vim искать модели, если она установлена. Переменная modelines сообщает Vim, сколько строк сверху и снизу нужно сканировать в поисках модельной линии (в этом случае она найдет модельную линию, если она находится в первой или последней пяти строках файла).

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

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

3 голосов
/ 10 сентября 2009

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

" HTML
autocmd BufNewFile,BufRead *.html,*.htm,*.xhtml source ~/.vimhtml
" XML
autocmd BufNewFile,BufRead *.xml,*.xmi source ~/.vimxml
" Perl
autocmd BufNewFile,BufRead *.pl,*.pm source ~/.vimperl

Обратите внимание, что, хотя я создаю файл, я могу выполнить любую команду VIM или вызвать функцию. например для загрузки нового файла Java я делаю это:

autocmd BufNewFile *.java call GeneratePackage()

, где GeneratePackage() - функция VIM.

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