Как мне установить плагин для vim?


147

Я хотел бы попробовать плагин для Vim, связанный ниже. Он добавляет подсветку синтаксиса для .hamlи (возможно) .sassфайлов.

http://github.com/tpope/vim-haml

Я сделал это...

$ cd ~/.vim
$ git clone git://github.com/tpope/vim-haml.git

Я открыл .hamlфайл в Vim, но нет выделения. Должен быть еще один шаг, который мне нужно выполнить.


7
G'day, синтаксис включен? (Чтобы спросить очевидное)
Роб Уэллс

2
Я новичок в Vim. Как включить синтаксис?
Итан,

5
@ этан в обычном режиме,:syntax on
Карл Гертин

2
хороший ответ здесь superuser.com/questions/404686/install-plugins-in-vim
майкл

Идеальный вопрос для нового Vim QA: area51.stackexchange.com/proposals/76728/...
Экес

Ответы:


52

Эти две команды создадут ~/.vim/vim-haml/каталог с каталогами ftplugin, синтаксиса и т. Д. Эти каталоги должны быть непосредственно в ~/.vimкаталоге или ~/.vim/vim-hamlдолжны быть добавлены в список путей, по которым vim ищет плагины.

Редактировать:

Недавно я решил настроить свой vim config и в процессе работы записал следующий rakefile. Он работает только в Mac / Linux, но его преимущество перед cpверсиями состоит в том, что он полностью безопасен (символические ссылки не перезаписывают существующие файлы, удаляет только удаленные символические ссылки) и легко обновляет информацию.

# Easily install vim plugins from a source control checkout (e.g. Github)
#
# alias vim-install=rake -f ~/.vim/rakefile-vim-install
# vim-install
# vim-install uninstall

require 'ftools'
require 'fileutils'

task :default => :install
desc "Install a vim plugin the lazy way"
task :install do
  vim_dir      = File.expand_path("~/.vim")
  plugin_dir   = Dir.pwd

  if not (FileTest.exists? File.join(plugin_dir,".git") or
          FileTest.exists? File.join(plugin_dir,".svn") or
          FileTest.exists? File.join(plugin_dir,".hg"))
      puts "#{plugin_dir} isn't a source controlled directory. Aborting."
      exit 1
  end

  Dir['**/'].each do |d|
    FileUtils.mkdir_p File.join(vim_dir, d)
  end

  Dir["**/*.{txt,snippet,snippets,vim,js,wsf}"].each do |f|
    ln File.join(plugin_dir, f), File.join(vim_dir,f)
  end

  boldred = "\033[1;31m"
  clear = "\033[0m"
  puts "\nDone. Remember to #{boldred}:helptags ~/.vim/doc#{clear}"
end

task :uninstall do
  vim_dir      = File.expand_path("~/.vim")
  plugin_dir   = Dir.pwd
  Dir["**/*.{txt,snippet,snippets,vim}"].each do |f|
    safe_rm File.join(vim_dir, f)
  end
end

def nicename(path)
    boldgreen = "\033[1;32m"
    clear = "\033[0m"
    return "#{boldgreen}#{File.join(path.split('/')[-2..-1])}#{clear}\t"
end

def ln(src, dst)
    begin
        FileUtils.ln_s src, dst
        puts "    Symlink #{nicename src}\t => #{nicename dst}"
    rescue Errno::EEXIST
        puts "  #{nicename dst} exists! Skipping."
    end
end

def cp(src, dst)
  puts "    Copying #{nicename src}\t=> #{nicename dst}"
  FileUtils.cp src, dst
end

def safe_rm(target)
    if FileTest.exists? target and FileTest.symlink? target
        puts "    #{nicename target} removed."
        File.delete target
    else
        puts "  #{nicename target} is not a symlink. Skipping"
    end
end

132

Убедитесь, что фактический .vimфайл находится в~/.vim/plugin/


17
Спасибо за простой ответ!
Drew LeSueur

Да, я думаю, что это решает большинство вопросов пользователей.
Продажи Dielson

Или в любом подкаталоге в ~ / .vim / plugin /?
RajaRaviVarma

Чтобы было ясно: когда вы говорите ~/.vim, вы имеете в виду, где Vim установлен, верно? Место хранится в $VIM(то есть, если вы :echom $VIM, это место)
Фонд Моники иск

@QPaysTaxes в моей системе :echom $VIMпоказывает /usr/share/vim. Но в этом ответе используется префикс, ~ предлагающий установить плагины в домашнем каталоге пользователя.
Поль Ружье

45

Чтобы расширить ответ Карла, Vim просматривает определенные каталоги для своих файлов времени выполнения. Вы можете увидеть этот набор каталогов через :set runtimepath?. Чтобы сказать Vim также заглянуть внутрь, ~/.vim/vim-hamlвы захотите добавить

set runtimepath+=$HOME/.vim/vim-haml

к вашему ~/.vimrc. Вы, вероятно, также захотите, чтобы в вашем ~/.vimrcбраузере были включены все функции, предоставляемые vim-haml.

filetype plugin indent on
syntax on

Вы можете обратиться к разделам справки 'runtimepath'и :filetypeсправки в Vim для получения дополнительной информации.


1
"Синтаксис включен" или "Синтаксис включен"? Аналогично с "filetype" / ": filtype".
Итан

4
Когда вы вводите их в интерактивном режиме, вам нужно ввести «:», чтобы перейти в режим cmdline. В сценарии они не нужны, так как сценарий находится в режиме cmdline, так сказать. В связи с этим общепринятая практика - опускать в сценариях символы «:», поскольку все, что он делает, это добавляет ненужный беспорядок.
Jamessan

19

Я думаю, вам стоит взглянуть на плагин Pathogen . После того, как вы установили это, вы можете хранить все ваши плагины в отдельных папках в ~ / .vim / bundle /, и Pathogen позаботится о их загрузке.

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


2

Обновление (как 2019):

cd ~/.vim
git clone git://github.com/tpope/vim-haml.git pack/bundle/start/haml

Пояснение (из :h packобъявления :h packages):

  1. Все найденные каталоги добавлены в runtimepath. Они должны быть в ~ / .vim / пакет / любой / начать [вы можете только то , что изменение].
  2. плагины, найденные в pluginsдиректории runtimepath, поставляются.

Таким образом, это загрузить плагин при запуске (отсюда и название start).

Вы также можете получить дополнительный плагин (загружен с :packadd), если вы положите их в ~ / .vim / pack / bundle / opt


1
Подробные объяснения будут иметь большое значение, но это мой предпочтительный метод, так что воздержитесь
Д. Бен Нобл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.