Bagaimana cara saya menginstal plugin untuk vim?

147

Saya ingin mencoba plugin untuk Vim yang ditautkan di bawah. Ia menambahkan penyorotan sintaks untuk .hamldan (mungkin) .sassfile.

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

Saya melakukan ini ...

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

Saya membuka .hamlfile di Vim, tetapi tidak ada yang disorot. Pasti ada langkah lain yang perlu saya lakukan.

Ethan
sumber
7
G'day, apakah sintaks dihidupkan? (Untuk meminta yang jelas)
Rob Wells
2
Saya baru di Vim. Bagaimana cara mengaktifkan sintaks?
Ethan
5
@ethan dalam mode normal,:syntax on
Karl Guertin
2
jawaban yang bagus di sini superuser.com/questions/404686/installing-plugins-in-vim
michael
Pertanyaan sempurna untuk Vim QA baru: area51.stackexchange.com/proposals/76728/…
eckes

Jawaban:

52

Kedua perintah itu akan membuat ~/.vim/vim-haml/direktori dengan direktori ftplugin, sintaks, dll. Direktori-direktori itu harus segera di ~/.vimdirektori yang tepat atau ~/.vim/vim-hamlperlu ditambahkan ke daftar jalur yang vim mencari plugin.

Edit:

Saya baru-baru ini memutuskan untuk mengubah konfigurasi vim saya dan dalam proses akhirnya menulis rakefile berikut. Ini hanya berfungsi di Mac / Linux, tetapi kelebihan dari cpversi adalah sepenuhnya aman (symlink tidak menimpa file yang ada, uninstall hanya menghapus symlink) dan mudah untuk memperbaruinya.

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

Pastikan .vimfile aktual ada di~/.vim/plugin/

gir
sumber
17
Terima kasih atas jawaban yang sederhana!
Drew LeSueur
Ya, saya kira ini memecahkan sebagian besar pertanyaan pengguna.
Penjualan Dielson
Atau dalam subdirektori di bawah ~ / .vim / plugin /?
RajaRaviVarma
Untuk menjadi jelas: ketika Anda mengatakan ~/.vim, maksud Anda di mana pun vim diinstal, bukan? Tempat yang disimpan $VIM(yaitu jika Anda :echom $VIM, itu tempatnya)
Dana Monica's Lawsuit
@QPaysTaxes di sistem saya :echom $VIMmenunjukkan /usr/share/vim. Tetapi jawaban ini menggunakan awalan ~ untuk menyarankan menginstal plugin di direktori home pengguna.
Paul Rougieux
45

Untuk memperluas jawaban Karl, Vim mencari di set direktori tertentu untuk file runtime-nya. Anda dapat melihat kumpulan direktori tersebut melalui :set runtimepath?. Untuk memberi tahu Vim agar juga melihat ke dalam, ~/.vim/vim-hamlAnda ingin menambahkan

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

untuk Anda ~/.vimrc. Anda mungkin juga menginginkan yang berikut ini di Anda ~/.vimrcuntuk mengaktifkan semua fungsi yang disediakan oleh vim-haml.

filetype plugin indent on
syntax on

Anda dapat merujuk ke 'runtimepath'dan :filetypemembantu topik di Vim untuk informasi lebih lanjut.

jamessan
sumber
1
Apakah "sintaks aktif" atau ": sintaks aktif"? Begitu juga dengan "filetype" / ": filtype".
Ethan
4
Saat Anda mengetikkannya secara interaktif, Anda memerlukan ':' untuk masuk ke mode cmdline. Dalam skrip, mereka tidak diperlukan karena skrip berada dalam mode cmdline, jadi untuk berbicara. Karena itu, itu praktik standar untuk menghilangkan ':' dalam skrip karena semua yang dilakukannya adalah menambahkan kekacauan yang tidak perlu.
jamessan
19

Saya pikir Anda harus melihat pada plugin Pathogen . Setelah Anda menginstal ini, Anda dapat menyimpan semua plugin Anda di folder terpisah di ~ / .vim / bundle /, dan Pathogen akan mengurus pemuatannya.

Atau, sebagai alternatif, mungkin Anda lebih suka Vundle , yang menyediakan fungsionalitas serupa (dengan tambahan bonus pembaruan otomatis dari plugin di github).

yngve
sumber
2

Pembaruan (sebagai 2019):

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

Penjelasan (dari :h packiklan :h packages):

  1. Semua direktori yang ditemukan ditambahkan ke runtimepath. Mereka harus dalam ~ / .vim / pack / apa pun / mulai [Anda hanya dapat mengubah apa pun].
  2. plugin yang ditemukan di pluginsdir runtimepathbersumber.

Jadi ini memuat plugin saat start (maka namanya mulai).

Anda juga bisa mendapatkan plugin opsional (penuh dengan :packadd) jika Anda meletakkannya di ~ / .vim / pack / bundle / opt

Tinmarino
sumber
1
Penjelasan terperinci akan berjalan jauh, tetapi ini adalah metode yang saya sukai, jadi dapatkan
dukungannya