Як встановити плагін для 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
Я новачок у Вімі. Як увімкнути синтаксис?
Етан

5
@ethan у звичайному режимі,:syntax on
Карл Гертін

2
хороша відповідь тут superuser.com/questions/404686/installing-plugins-in-vim
michael

Ідеальне питання до нового Vim QA: area51.stackexchange.com/proposals/76728/…
eckes

Відповіді:


52

Ці дві команди створять ~/.vim/vim-haml/каталог із каталогами ftplugin, синтаксис тощо. Ці каталоги повинні бути негайно у відповідному ~/.vimкаталозі або ~/.vim/vim-hamlїх потрібно додати до списку шляхів, які vim шукає плагіни.

Редагувати:

Нещодавно я вирішив налаштувати свій конфігурацію vim і в процесі завершення написав наступний рейкфайл. Він працює лише на 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
Дякую за просту відповідь!
Дрю Лесюер

Так, я думаю, що це вирішує більшість питань користувачів.
Продаж Дільсона

Або в будь-якому підкаталозі під ~ / .vim / plugin /?
RajaRaviVarma

Щоб було зрозуміло: коли ви говорите ~/.vim, ви маєте на увазі, де встановлено vim, правда? Місце, яке зберігається в $VIM(тобто, якщо ви :echom $VIM, саме це місце)
Позов

@QPaysTaxes у моїй системі :echom $VIMпоказує /usr/share/vim. Але ця відповідь використовує префікс, ~ щоб запропонувати встановити плагіни в домашній каталог користувача.
Пол Рудьо

45

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

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

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

filetype plugin indent on
syntax on

Для отримання додаткової інформації ви можете ознайомитися з темами 'runtimepath'та :filetypeдовідками у Vim.


1
Це "синтаксис увімкнено" чи ": синтаксис увімкнено"? Точно так само і з "філейтипом" / ": фільтип".
Етан

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 / pack / what / start [ви можете змінити лише все].
  2. плагіни знаходяться в pluginsдиректорії в runtimepathпоставляються.

Таким чином, завантажте плагін при запуску (звідси і назва start).

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


1
Детальні роз'яснення пройдуть довгий шлях, але це мій кращий метод, тож майте нагоду
Д. Бен Кнобл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.