Comment installer un plugin pour vim?


147

J'aimerais essayer le plugin pour Vim lié ci-dessous. Il ajoute la coloration syntaxique des fichiers .hamlet (peut-être) .sass.

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

J'ai fait ça...

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

J'ai ouvert un .hamlfichier dans Vim, mais il n'y a pas de mise en évidence. Il doit y avoir une autre étape que je dois effectuer.


7
G'day, la syntaxe est-elle activée? (Pour demander l'évidence)
Rob Wells

2
Je suis nouveau sur Vim. Comment activer la syntaxe?
Ethan

5
@ethan en mode normal,:syntax on
Karl Guertin


Question parfaite pour le nouveau QA Vim: area51.stackexchange.com/proposals/76728
...

Réponses:


52

Ces deux commandes créeront un ~/.vim/vim-haml/répertoire contenant les répertoires ftplugin, syntax, etc. Ces répertoires doivent être immédiatement dans le ~/.vimrépertoire approprié ou ~/.vim/vim-hamldoivent être ajoutés à la liste des chemins dans lesquels vim recherche les plugins.

Éditer:

J'ai récemment décidé de modifier ma configuration de vim et, dans le processus, j'ai fini par écrire le fichier rakefile suivant. Cela ne fonctionne que sur Mac / Linux, mais l'avantage par rapport aux cpversions est qu'il est totalement sûr (les liens symboliques n'écrasent pas les fichiers existants, la désinstallation ne supprime que les liens symboliques) et qu'il est facile de garder les choses à jour.

# 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

Assurez-vous que le .vimfichier réel est~/.vim/plugin/


17
Merci pour la réponse simple!
Drew LeSueur le

Oui, je suppose que celui-ci résout la plupart des questions des utilisateurs.
Dielson Sales

Ou dans n'importe quel sous-répertoire sous ~ / .vim / plugin /?
RajaRaviVarma

Pour être clair: quand vous dites ~/.vim, vous voulez dire partout où vim est installé, non? L'endroit stocké $VIM(c'est-à-dire si vous :echom $VIM, c'est l'endroit)
Fund Monica's Lawsuit

@QPaysTaxes sur mon système :echom $VIMs'affiche /usr/share/vim. Mais cette réponse utilise le préfixe ~ pour suggérer d'installer des plugins dans le répertoire personnel de l'utilisateur.
Paul Rougieux

45

Pour développer la réponse de Karl, Vim recherche dans un ensemble spécifique de répertoires ses fichiers d'exécution. Vous pouvez voir cet ensemble de répertoires via:set runtimepath? . Afin de dire à Vim de regarder également à l'intérieur, ~/.vim/vim-hamlvous voudrez ajouter

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

à votre ~/.vimrc. Vous souhaiterez probablement également ce qui suit dans votre ~/.vimrcpour activer toutes les fonctionnalités fournies par vim-haml.

filetype plugin indent on
syntax on

Vous pouvez vous référer aux rubriques d'aide 'runtimepath'et :filetypedans Vim pour plus d'informations.


1
Est-ce que "syntax on" ou ": syntax on"? De même avec "filetype" / ": filtype".
Ethan

4
Lorsque vous les tapez de manière interactive, vous avez besoin du ':' pour entrer en mode cmdline. Dans un script, ils ne sont pas nécessaires car le script est en mode cmdline, pour ainsi dire. Pour cette raison, il est de pratique courante d'omettre les «:» dans les scripts car tout ce qu'il fait est d'ajouter un encombrement inutile.
jamessan

19

Je pense que vous devriez jeter un œil au plugin Pathogen . Une fois que vous l'avez installé, vous pouvez conserver tous vos plugins dans des dossiers séparés dans ~ / .vim / bundle /, et Pathogen se chargera de les charger.

Ou peut-être préféreriez-vous Vundle , qui offre des fonctionnalités similaires (avec en prime des mises à jour automatiques à partir de plugins dans github).


2

Mise à jour (comme 2019):

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

Explication (de l' :h packannonce :h packages):

  1. Tous les répertoires trouvés sont ajoutés runtimepath. Ils doivent être dans ~ / .vim / pack / peu importe / start [vous ne pouvez changer que ce que vous voulez].
  2. les plugins trouvés dans le pluginsrépertoire runtimepathproviennent.

Donc, cela charge le plugin au démarrage (d'où le nom start).

Vous pouvez également obtenir un plugin optionnel (chargé avec :packadd) si vous les mettez dans ~ / .vim / pack / bundle / opt


1
Des explications détaillées iraient un long chemin, mais c'est ma méthode préférée, alors ayez un vote favorable
D. Ben Knoble
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.