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.


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


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

132

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


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.


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).


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


1
Penjelasan terperinci akan berjalan jauh, tetapi ini adalah metode yang saya sukai, jadi dapatkan
dukungannya
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.