Como instalo um plugin para o vim?

147

Eu gostaria de experimentar o plugin para o Vim vinculado abaixo. Ele adiciona destaque de sintaxe para .hamle (talvez) .sassarquivos.

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

Eu fiz isso...

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

Abri um .hamlarquivo no Vim, mas não há destaque. Deve haver outro passo que preciso executar.

Ethan
fonte
7
Dia, a sintaxe está ativada? (Para perguntar o óbvio) #
1140 Rob
2
Eu sou novo no Vim. Como ativo a sintaxe?
Ethan
5
@ethan no modo normal,:syntax on
Karl Guertin
Pergunta perfeita para o novo controle de qualidade do Vim: area51.stackexchange.com/proposals/76728/…
eckes

Respostas:

52

Esses dois comandos criarão um ~/.vim/vim-haml/diretório com os diretórios ftplugin, sintaxe, etc. Esses diretórios precisam estar imediatamente no ~/.vimdiretório apropriado ou~/.vim/vim-haml precisam ser adicionados à lista de caminhos que o vim procura por plug-ins.

Editar:

Decidi recentemente ajustar minha configuração do vim e, no processo, acabei escrevendo o seguinte arquivo de rake. Funciona apenas no Mac / Linux, mas a vantagem sobre as cpversões é que é completamente seguro (links simbólicos não substituem arquivos existentes, desinstalação exclui apenas links simbólicos) e fácil de manter as coisas atualizadas.

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

Verifique se o .vimarquivo real está em~/.vim/plugin/

gir
fonte
17
Obrigado pela resposta simples!
Tirou LeSueur
Sim, acho que este resolve a maioria das perguntas dos usuários.
precisa
Ou em qualquer subdiretório em ~ / .vim / plugin /?
RajaRaviVarma 31/07
Para ser claro: quando você diz ~/.vim, quer dizer onde quer que o vim esteja instalado, certo? O local armazenado $VIM(por exemplo, se você :echom $VIM, esse é o local)
Fund Monica's Lawsuit
@QPaysTaxes no meu sistema :echom $VIMé exibido /usr/share/vim. Mas esta resposta usa o prefixo ~ para sugerir a instalação de plug-ins no diretório inicial do usuário.
Paul Rougieux 4/03/16
45

Para expandir a resposta de Karl, o Vim procura em um conjunto específico de diretórios seus arquivos de tempo de execução. Você pode ver esse conjunto de diretórios via :set runtimepath?. Para que o Vim também olhe dentro, ~/.vim/vim-hamlvocê deve adicionar

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

para o seu ~/.vimrc . Você provavelmente também desejará que o seguinte ~/.vimrchabilite todas as funcionalidades fornecidas pelo vim-haml.

filetype plugin indent on
syntax on

Você pode consultar os tópicos de ajuda 'runtimepath'e :filetypeno Vim para obter mais informações.

jamessan
fonte
1
A sintaxe está ativada ou a sintaxe ativada? Da mesma forma com "filetype" / ": filtype".
Ethan
4
Ao digitá-los interativamente, você precisa do ':' para entrar no modo cmdline. Em um script, eles não são necessários porque o script está no modo cmdline, por assim dizer. Por isso, é prática padrão omitir o ':' nos scripts, pois tudo o que faz é adicionar um monte de coisas desnecessárias.
jamessan
19

Eu acho que você deveria dar uma olhada no plugin Pathogen . Após a instalação, você poderá manter todos os seus plugins em pastas separadas em ~ / .vim / bundle /, e o Pathogen cuidará de carregá-los.

Ou, como alternativa, talvez você prefira o Vundle , que fornece funcionalidade semelhante (com o bônus adicional de atualizações automáticas de plugins no github).

yngve
fonte
2

Atualização (como 2019):

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

Explicação (do :h packanúncio :h packages):

  1. Todos os diretórios encontrados são adicionados a runtimepath. Eles devem estar em ~ / .vim / pack / qualquer que seja / start [você só pode mudar o que for].
  2. os plugins encontrados no pluginsdiretório runtimepathsão originados.

Portanto, isso carrega o plug-in no início (daí o nome start).

Você também pode obter um plug-in opcional (carregado com :packadd) se os colocar em ~ / .vim / pack / bundle / opt

Tinmarino
fonte
1
Explicações detalhadas dariam um longo caminho, mas esse é o meu método preferido, portanto, tenha um
voto positivo.