Vim için bir eklentiyi nasıl kurarım?


147

Aşağıda bağlantısı verilen Vim eklentisini denemek istiyorum. .hamlVe (belki) .sassdosyalar için sözdizimi vurgulama ekler .

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

Bunu ben yaptım...

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

.hamlVim'de bir dosya açtım ama vurgulama yok. Gerçekleştirmem gereken başka bir adım daha olmalı.


7
İyi günler, sözdizimi açık mı? (Bariz olanı sormak için)
Rob Wells

2
Vim'de yeniyim. Sözdizimini nasıl açarım?
Ethan

5
@ethan normal modda,:syntax on
Karl Guertin


Yeni Vim QA için mükemmel soru: area51.stackexchange.com/proposals/76728/…
2014

Yanıtlar:


52

Bu iki komut ~/.vim/vim-haml/, içinde ftplugin, sözdizimi vb. Dizinleri olan bir dizin yaratacaktır . Bu dizinlerin hemen ~/.vimuygun dizinde ~/.vim/vim-hamlolması veya eklentileri arayan yolların listesine eklenmesi gerekir.

Düzenle:

Son zamanlarda vim yapılandırmamı değiştirmeye karar verdim ve bu süreçte aşağıdaki rak dosyasını yazmaya başladım. Yalnızca Mac / Linux'ta çalışır, ancak cpsürümlere göre avantajı , tamamen güvenli olmasıdır (sembolik bağlar mevcut dosyaların üzerine yazmaz, yalnızca sembolik bağları siler) ve işleri güncel tutmanın kolay olmasıdır.

# 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

Gerçek .vimdosyanın içinde olduğundan emin olun .~/.vim/plugin/


17
Basit cevap için teşekkürler!
Drew LeSueur

Evet, sanırım bu çoğu kullanıcının sorularını çözüyor.
Dielson Satışları

Veya ~ / .vim / plugin / altındaki herhangi bir alt dizinde?
RajaRaviVarma

Açık olmak gerekirse: derken ~/.vim, vim'in kurulu olduğu her yeri kastediyorsunuz, değil mi? Depolanan yer $VIM(yani eğer siz :echom $VIM, yer
orasıdır

Sistemimdeki @QPaysTaxes :echom $VIMgösterileri /usr/share/vim. Ancak bu yanıt ~ , kullanıcının ana dizinine eklenti yüklemeyi önermek için öneki kullanır .
Paul Rougieux

45

Karl'ın yanıtını genişletmek için Vim, çalışma zamanı dosyaları için belirli bir dizine bakar. Bu dizinler kümesini aracılığıyla görebilirsiniz :set runtimepath?. Vim'e içeriye de bakmasını söylemek ~/.vim/vim-hamliçin eklemek isteyeceksiniz

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

senin için ~/.vimrc. ~/.vimrcVim-haml tarafından sağlanan tüm işlevleri etkinleştirmek için büyük olasılıkla aşağıdakileri de isteyeceksiniz .

filetype plugin indent on
syntax on

Daha fazla bilgi için Vim'deki 'runtimepath've :filetypeyardım konularına bakabilirsiniz .


1
"Sözdizimi açık" mı yoksa ": sözdizimi açık" mı? Aynı şekilde "filetype" / ": filtype" ile.
Ethan

4
Etkileşimli olarak yazdığınızda, cmdline moduna girmek için ':' tuşuna ihtiyacınız vardır. Bir komut dosyasında, komut dosyası cmdline modunda olduğu için gerekli değildir. Bu nedenle, komut dosyalarında ':' karakterlerini çıkarmak standart bir uygulamadır, tek yaptığı gibi gereksiz dağınıklık eklemektir.
jamessan

19

Patojen eklentisine bir göz atmanız gerektiğini düşünüyorum . Bunu yükledikten sonra, tüm eklentilerinizi ~ / .vim / bundle / içindeki ayrı klasörlerde tutabilirsiniz ve Pathogen onları yüklemekle ilgilenecektir.

Veya alternatif olarak, belki de benzer işlevsellik sağlayan Vundle'ı tercih edebilirsiniz ( github'daki eklentilerden otomatik güncelleme bonusuyla birlikte).


2

Güncelleme (2019 olarak):

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

Açıklama ( :h packreklamdan :h packages):

  1. Bulunan tüm dizinler eklenir runtimepath. ~ / .Vim / pack / ne / her neyse / start içinde olmalılar [sadece her şeyi değiştirebilirsiniz].
  2. eklentileri bulunan pluginsyılında dir runtimepathkaynak vardır.

Bu, eklentiyi başlangıçta yükler (dolayısıyla ad başlar).

Ayrıca :packadd~ / .vim / pack / bundle / opt içine koyarsanız isteğe bağlı eklenti (yüklü ) edinebilirsiniz.


1
Ayrıntılı açıklamalar uzun bir yol kat eder, ancak bu benim tercih ettiğim yöntemdir, bu yüzden olumlu oy verin
D. Ben Knoble
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.