Jak zainstalować wtyczkę dla Vima?

147

Chciałbym wypróbować wtyczkę do Vima, do której link znajduje się poniżej. Dodaje podświetlanie składni dla .hamli (być może) .sassplików.

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

Ja to zrobiłem...

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

Otworzyłem .hamlplik w Vimie, ale nie ma podświetlenia. Musi być inny krok, który muszę wykonać.

Ethan
źródło
7
Dzień dobry, czy składnia jest włączona? (Aby zapytać o oczywistość)
Rob Wells
2
Jestem nowy w Vimie. Jak włączyć składnię?
Ethan
5
@ethan w trybie normalnym,:syntax on
Karl Guertin
Idealne pytanie do nowego Vima QA: area51.stackexchange.com/propiments/76728/…
eckes

Odpowiedzi:

52

Te dwie komendy utworzą ~/.vim/vim-haml/katalog z katalogami ftplugin, syntax, etc. Te katalogi muszą znajdować się natychmiast w ~/.vimodpowiednim katalogu lub ~/.vim/vim-hamlmuszą zostać dodane do listy ścieżek, które vim szuka wtyczek.

Edytować:

Niedawno zdecydowałem się poprawić moją konfigurację vima i w trakcie tego procesu napisałem następujący plik rakefile. Działa tylko na Mac / Linux, ale przewagą nad cpwersjami jest to, że jest całkowicie bezpieczny (linki symboliczne nie zastępują istniejących plików, odinstalowanie tylko usuwa dowiązania symboliczne) i łatwe do aktualizowania.

# 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
Karl Guertin
źródło
132

Upewnij się, że rzeczywisty .vimplik jest w formacie~/.vim/plugin/

gir
źródło
17
Dzięki za prostą odpowiedź!
Drew LeSueur
Tak, myślę, że ten rozwiązuje większość pytań użytkowników.
Sprzedaż Dielson
Lub w jakimkolwiek podkatalogu w katalogu ~ / .vim / plugin /?
RajaRaviVarma
Żeby było jasne: kiedy mówisz ~/.vim, masz na myśli to, gdzie jest zainstalowany vim, prawda? Miejsce przechowywane w $VIM(tj. Jeśli ty :echom $VIM, to jest to miejsce)
Pozew Moniki w sprawie Fundacji Moniki
@QPaysTaxes w moim systemie :echom $VIMpokazuje /usr/share/vim. Ale ta odpowiedź używa przedrostka, ~ aby zasugerować instalację wtyczek w katalogu domowym użytkownika.
Paul Rougieux
45

Aby rozwinąć odpowiedź Karla, Vim szuka w określonym zestawie katalogów swoich plików wykonawczych. Możesz zobaczyć ten zestaw katalogów poprzez :set runtimepath?. Aby powiedzieć Vimowi, aby również zajrzał do środka ~/.vim/vim-haml, będziesz chciał dodać

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

do twojego ~/.vimrc. Prawdopodobnie będziesz potrzebować również następujących elementów, ~/.vimrcaby włączyć wszystkie funkcje zapewniane przez vim-haml.

filetype plugin indent on
syntax on

Możesz zapoznać się z tematami pomocy 'runtimepath'i :filetypew Vimie, aby uzyskać więcej informacji.

jamessan
źródło
1
Czy „składnia włączona” czy „: składnia włączona”? Podobnie z „filetype” / „: filtype”.
Ethan
4
Kiedy wpisujesz je interaktywnie, potrzebujesz znaku „:”, aby przejść do trybu linii poleceń. W skrypcie nie są one potrzebne, ponieważ skrypt jest, że tak powiem, w trybie linii cmd. Z tego powodu standardową praktyką jest pomijanie znaku „:” w skryptach, ponieważ wszystko, co robi, to dodanie niepotrzebnego bałaganu.
jamessan
19

Myślę, że powinieneś rzucić okiem na wtyczkę Pathogen . Po zainstalowaniu możesz przechowywać wszystkie swoje wtyczki w osobnych folderach w ~ / .vim / bundle /, a Pathogen zajmie się ich załadowaniem.

Lub, alternatywnie, być może wolisz Vundle , który zapewnia podobną funkcjonalność (z dodatkową zaletą automatycznych aktualizacji z wtyczek na github).

yngve
źródło
2

Aktualizacja (od 2019 r.):

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

Wyjaśnienie (z :h packreklamy :h packages):

  1. Wszystkie znalezione katalogi są dodawane do runtimepath. Muszą znajdować się w ~ / .vim / pack / cokolwiek / start [możesz tylko zmienić cokolwiek].
  2. wtyczki znajdują się w pluginskatalogu w runtimepathpochodzą.

Więc to ładuje wtyczkę na starcie (stąd nazwa start).

Możesz także pobrać opcjonalną wtyczkę (załadowaną :packadd), jeśli umieścisz ją w ~ / .vim / pack / bundle / opt

Tinmarino
źródło
1
Szczegółowe wyjaśnienia byłyby bardzo przydatne, ale to moja preferowana metoda, więc proszę o głosowanie za
D. Ben Knoble,