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.


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

132

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


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.


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).


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.