Come installo un plugin per vim?


147

Vorrei provare il plugin per Vim collegato di seguito. Aggiunge l'evidenziazione della sintassi per .hamle (forse) .sassfile.

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

L'ho fatto...

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

Ho aperto un .hamlfile in Vim, ma non c'è evidenziazione. Ci deve essere un altro passo che devo eseguire.


7
Buongiorno, la sintassi è attivata? (Per chiedere l'ovvio)
Rob Wells,

2
Sono nuovo di Vim. Come si attiva la sintassi?
Ethan,

5
@ethan in modalità normale,:syntax on
Karl Guertin,


Domanda perfetta per il nuovo QA Vim: area51.stackexchange.com/proposals/76728/…
eckes

Risposte:


52

Questi due comandi creeranno una ~/.vim/vim-haml/directory contenente le directory ftplugin, sintassi, ecc. Tali directory devono essere immediatamente nella ~/.vimdirectory corretta o ~/.vim/vim-hamldevono essere aggiunte all'elenco dei percorsi che vim cerca plug-in.

Modificare:

Di recente ho deciso di modificare la mia configurazione di Vim e nel frattempo ho finito per scrivere il seguente rakefile. Funziona solo su Mac / Linux, ma il vantaggio rispetto alle cpversioni è che è completamente sicuro (i collegamenti simbolici non sovrascrivono i file esistenti, la disinstallazione elimina solo i collegamenti simbolici) e facilita l'aggiornamento delle cose.

# 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

Assicurarsi che sia presente il .vimfile effettivo~/.vim/plugin/


17
Grazie per la semplice risposta!
Ha disegnato LeSueur il

Sì, suppongo che questo risolva la maggior parte delle domande degli utenti.
Dielson Sales,

O in qualsiasi sottodirectory in ~ / .vim / plugin /?
RajaRaviVarma,

Per essere chiari: quando dici ~/.vim, intendi ovunque sia installato vim, giusto? Il posto in cui ti trovi $VIM(cioè se :echom $VIMquello è il posto giusto)
finanzia la causa di Monica il

@QPaysTax sul mio sistema :echom $VIMmostra /usr/share/vim. Ma questa risposta usa il prefisso ~ per suggerire l'installazione di plugin nella home directory dell'utente.
Paul Rougieux,

45

Per espandere la risposta di Karl, Vim cerca in un set specifico di directory i suoi file di runtime. Puoi vedere quel set di directory tramite :set runtimepath?. Per dire a Vim di guardare anche dentro ~/.vim/vim-haml, ti consigliamo di aggiungere

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

al tuo ~/.vimrc. Probabilmente vorrai anche quanto segue ~/.vimrcper abilitare tutte le funzionalità fornite da vim-haml.

filetype plugin indent on
syntax on

È possibile consultare le 'runtimepath'e :filetypeargomenti della Guida in Vim per ulteriori informazioni.


1
È "sintassi attiva" o ": sintassi attiva"? Allo stesso modo con "filetype" / ": filtype".
Ethan,

4
Quando le digiti in modo interattivo, è necessario ':' per accedere alla modalità cmdline. In uno script, non sono necessari perché lo script è in modalità cmdline, per così dire. Per questo motivo, è prassi normale omettere gli ":" negli script poiché tutto ciò che fa è aggiungere disordine inutile.
Jamessan,

19

Penso che dovresti dare un'occhiata al plugin Pathogen . Dopo aver installato questo, è possibile mantenere tutti i plugin in cartelle separate in ~ / .vim / bundle / e Pathogen si occuperà di caricarli.

O, in alternativa, forse preferiresti Vundle , che offre funzionalità simili (con il bonus aggiuntivo di aggiornamenti automatici dai plugin in github).


2

Aggiornamento (come 2019):

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

Spiegazione (da :h packannuncio :h packages):

  1. Tutte le directory trovate vengono aggiunte a runtimepath. Devono essere in ~ / .vim / pack / qualunque / inizio [puoi cambiare qualunque cosa].
  2. i plug-in trovati nella pluginsdirectory di accesso runtimepathprovengono da.

Quindi questo carica il plugin all'avvio (da qui il nome start).

Puoi anche ottenere plugin opzionali (caricati con :packadd) se li metti in ~ / .vim / pack / bundle / opt


1
Spiegazioni dettagliate farebbero molto, ma questo è il mio metodo preferito, quindi abbiate un voto
D. Ben Knoble
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.