2009-10-28 10 views
143

Me gustaría probar el complemento para Vim vinculado a continuación. Agrega resaltado de sintaxis para .haml y (quizás) .sass archivos.¿Cómo instalo un complemento para vim?

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

lo hice ...

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

que abre un archivo .haml en Vim, pero no hay resaltado. Debe haber otro paso que necesito realizar.

+7

G'day, ¿La sintaxis está activada? (Para preguntar lo obvio) –

+2

Soy nuevo en Vim. ¿Cómo cambio la sintaxis? – Ethan

+5

@ethan en modo normal, ': sintaxis en ' –

Respuesta

52

Esos dos comandos crearán un directorio ~/.vim/vim-haml/ con el ftplugin, sintaxis, etc. directorios en el mismo. Esos directorios deben estar inmediatamente en el directorio ~/.vim o ~/.vim/vim-haml debe agregarse a la lista de rutas que vim busca para complementos.

Editar:

Recientemente he decidido modificar mi configuración de vim y en el proceso de cicatrización de escribir el siguiente Rakefile. Solo funciona en Mac/Linux, pero la ventaja sobre las versiones cp es que es completamente segura (los enlaces simbólicos no sobrescriben los archivos existentes, la desinstalación solo elimina los enlaces simbólicos) y es fácil mantener las cosas actualizadas.

# 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 
+0

¡Ah! OK, eso tiene sentido. – Ethan

125

Asegúrese de que el archivo real .vim está en ~/.vim/plugin/

+17

¡Gracias por la respuesta simple! –

+0

Sí, supongo que este resuelve la mayoría de las preguntas de los usuarios. –

+0

O en cualquier subdirectorio bajo ~/.vim/plugin /? – RajaRaviVarma

44

Para ampliar la respuesta de Karl, Vim busca en un conjunto específico de directorios sus archivos de tiempo de ejecución. Puede ver ese conjunto de directorios a través del :set runtimepath?. Con el fin de decirle a Vim que mirar también en el interior ~/.vim/vim-haml usted querrá agregar

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

a su ~/.vimrc. Probablemente también desee lo siguiente en su ~/.vimrc para habilitar toda la funcionalidad provista por vim-haml.

filetype plugin indent on 
syntax on 

Se puede hacer referencia a los temas 'runtimepath' y :filetype ayuda de Vim para más información.

+1

¿Hay "sintaxis activada" o ": sintaxis activada"? Del mismo modo con "filetype"/": filtype". – Ethan

+4

Cuando los escribe interactivamente, necesita el ':' para ingresar al modo cmdline. En un script, no son necesarios porque el script está en modo cmdline, por así decirlo. Por eso, es una práctica estándar omitir los ':' s en las secuencias de comandos ya que todo lo que hace es agregar desorden innecesario. – jamessan

19

Creo que deberías echarle un vistazo al Pathogen plugin. Después de tener esto instalado, puede mantener todos sus complementos en carpetas separadas en ~/.vim/bundle /, y Pathogen se encargará de cargarlos.

O, como alternativa, quizás prefiera Vundle, que proporciona una funcionalidad similar (con la ventaja añadida de las actualizaciones automáticas de los complementos en github).

Cuestiones relacionadas