Wie installiere ich ein Plugin für vim?

147

Ich möchte das unten verlinkte Plugin für Vim ausprobieren. Es fügt Syntaxhervorhebungen für .hamlund (möglicherweise) .sassDateien hinzu.

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

Ich war das...

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

Ich habe eine .hamlDatei in Vim geöffnet , aber es gibt keine Hervorhebung. Es muss einen weiteren Schritt geben, den ich ausführen muss.

Ethan
quelle
7
G'day, ist die Syntax eingeschaltet? (Um das Offensichtliche zu fragen)
Rob Wells
2
Ich bin neu bei Vim. Wie schalte ich die Syntax ein?
Ethan
5
@ethan im normalen Modus,:syntax on
Karl Guertin
Perfekte Frage für die neue Vim QA: area51.stackexchange.com/proposals/76728/…
eckes

Antworten:

52

Diese beiden Befehle erstellen ein ~/.vim/vim-haml/Verzeichnis mit den Verzeichnissen ftplugin, syntax usw. Diese Verzeichnisse müssen sich sofort im ~/.vimeigentlichen Verzeichnis befinden oder ~/.vim/vim-hamlzur Liste der Pfade hinzugefügt werden, die vim nach Plugins sucht.

Bearbeiten:

Ich habe vor kurzem beschlossen, meine vim-Konfiguration zu optimieren, und dabei das folgende Rakefile geschrieben. Es funktioniert nur unter Mac / Linux, aber der Vorteil gegenüber cpVersionen ist, dass es absolut sicher ist (Symlinks überschreiben keine vorhandenen Dateien, Deinstallation löscht nur Symlinks) und einfach auf dem neuesten Stand zu halten.

# 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
quelle
132

Stellen Sie sicher, dass sich die eigentliche .vimDatei in befindet~/.vim/plugin/

gir
quelle
17
Danke für die einfache Antwort!
Drew LeSueur
Ja, ich denke, dies löst die meisten Fragen der Benutzer.
Dielson Sales
Oder in einem Unterverzeichnis unter ~ / .vim / plugin /?
RajaRaviVarma
Um es klar auszudrücken: Wenn Sie sagen ~/.vim, meinen Sie, wo immer vim installiert ist, richtig? Der Ort, an dem gespeichert ist $VIM(dh wenn Sie :echom $VIM, das ist der Ort)
Fund Monica's Lawsuit
@QPaysTaxes auf meinem System :echom $VIMzeigt /usr/share/vim. Diese Antwort verwendet jedoch das Präfix, ~ um die Installation von Plugins im Home-Verzeichnis des Benutzers vorzuschlagen.
Paul Rougieux
45

Um Karls Antwort zu erweitern, sucht Vim in einem bestimmten Satz von Verzeichnissen nach seinen Laufzeitdateien. Sie können diese Verzeichnisse über sehen :set runtimepath?. Um Vim anzuweisen, auch nach innen zu schauen ~/.vim/vim-haml, möchten Sie hinzufügen

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

zu deinem ~/.vimrc. Sie möchten wahrscheinlich auch Folgendes in Ihrem ~/.vimrc, um alle von vim-haml bereitgestellten Funktionen zu aktivieren.

filetype plugin indent on
syntax on

Sie können die beziehen sich auf 'runtimepath'und :filetypeum weitere Informationen zu Hilfethemen in Vim.

Jamessan
quelle
1
Ist "Syntax ein" oder ": Syntax ein"? Ebenso mit "Dateityp" / ": Filtype".
Ethan
4
Wenn Sie sie interaktiv eingeben, benötigen Sie das ':', um in den cmdline-Modus zu gelangen. In einem Skript werden sie nicht benötigt, da sich das Skript sozusagen im cmdline-Modus befindet. Aus diesem Grund ist es üblich, die ':' in Skripten wegzulassen, da nur unnötige Unordnung hinzugefügt wird.
Jamessan
19

Ich denke, Sie sollten sich das Pathogen-Plugin ansehen . Nachdem Sie dies installiert haben, können Sie alle Ihre Plugins in separaten Ordnern in ~ / .vim / bundle / aufbewahren, und Pathogen kümmert sich um das Laden.

Alternativ können Sie auch Vundle bevorzugen , das ähnliche Funktionen bietet (mit dem zusätzlichen Bonus von automatischen Updates von Plugins in Github).

yngve
quelle
2

Update (wie 2019):

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

Erklärung (aus :h packAnzeige :h packages):

  1. Alle gefundenen Verzeichnisse werden hinzugefügt runtimepath. Sie müssen sich in ~ / .vim / pack / Whatever / Start befinden [Sie können nur was auch immer ändern].
  2. die Plugins in dem gefunden pluginsdir in runtimepathsind bezogen.

Laden Sie also das Plugin beim Start (daher der Name Start).

Sie können auch ein optionales Plugin (geladen mit :packadd) erhalten, wenn Sie es in ~ / .vim / pack / bundle / opt ablegen

Tinmarino
quelle
1
Detaillierte Erklärungen würden einen langen Weg gehen, aber dies ist meine bevorzugte Methode, also haben Sie eine positive Bewertung
D. Ben Knoble