¿Cómo instalo un complemento para vim?

147

Me gustaría probar el complemento para Vim vinculado a continuación. Agrega resaltado de sintaxis para .hamly (tal vez) .sassarchivos.

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

Hice esto...

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

Abrí un .hamlarchivo en Vim, pero no hay resaltado. Debe haber otro paso que necesito realizar.

Ethan
fuente
77
G'day, ¿está activada la sintaxis? (Para preguntar lo obvio)
Rob Wells
2
Soy nuevo en Vim. ¿Cómo activo la sintaxis?
Ethan
55
@ethan en modo normal,:syntax on
Karl Guertin
Pregunta perfecta para el nuevo control de calidad de Vim: area51.stackexchange.com/proposals/76728/…
eckes

Respuestas:

52

Esos dos comandos crearán un ~/.vim/vim-haml/directorio con los directorios ftplugin, sintaxis, etc. Esos directorios tienen que ser inmediatamente en el ~/.vimdirectorio adecuado o ~/.vim/vim-hamlnecesidades que se añade a la lista de rutas que Vim búsquedas de plugins.

Editar:

Recientemente decidí modificar mi configuración de vim y en el proceso terminé escribiendo el siguiente archivo de rake. Solo funciona en Mac / Linux, pero la ventaja sobre las cpversiones es que es completamente seguro (los enlaces simbólicos no sobrescriben los archivos existentes, la desinstalación solo elimina los enlaces simbólicos) y es fácil de mantener actualizado.

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

Asegúrese de que el .vimarchivo real esté en~/.vim/plugin/

gir
fuente
17
Gracias por la respuesta simple!
Drew LeSueur
Sí, supongo que este resuelve la mayoría de las preguntas de los usuarios.
Dielson Sales
¿O en cualquier subdirectorio bajo ~ / .vim / plugin /?
RajaRaviVarma
Para ser claros: cuando dices ~/.vim, te refieres a donde esté instalado vim, ¿verdad? El lugar almacenado en $VIM(es decir, si tú :echom $VIM, ese es el lugar)
Financia la demanda de Mónica el
@QPaysTaxes en mi sistema :echom $VIMmuestra /usr/share/vim. Pero esta respuesta utiliza el prefijo ~ que sugiere instalar complementos en el directorio de inicio del usuario.
Paul Rougieux
45

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 de :set runtimepath?. Para decirle a Vim que también mire dentro ~/.vim/vim-haml, querrá agregar

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

a tu ~/.vimrc. Es probable que también desee lo siguiente en su ~/.vimrcpara habilitar toda la funcionalidad proporcionada por vim-haml.

filetype plugin indent on
syntax on

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

jamessan
fuente
1
¿Está "sintaxis activada" o ": sintaxis activada"? Del mismo modo con "filetype" / ": filtype".
Ethan
44
Cuando los escribe de forma interactiva, necesita ':' para ingresar al modo cmdline. En un script, no son necesarios porque el script está en modo cmdline, por así decirlo. Debido a eso, es una práctica estándar omitir los ':' en los scripts, ya que todo lo que hace es agregar un desorden innecesario.
jamessan
19

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

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

yngve
fuente
2

Actualización (como 2019):

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

Explicación (del :h packanuncio :h packages):

  1. Todos los directorios encontrados se agregan a runtimepath. Deben estar en ~ / .vim / pack / whatever / start [solo puede cambiar lo que sea].
  2. los complementos que se encuentran en el pluginsdirectorio de runtimepathproceden.

Entonces esto carga el complemento al inicio (de ahí el nombre de inicio).

También puede obtener el complemento opcional (cargado con :packadd) si los coloca en ~ / .vim / pack / bundle / opt

Tinmarino
fuente
1
Las explicaciones detalladas serían de gran ayuda, pero este es mi método preferido, así que tenga un voto a favor
D. Ben Knoble