ฉันจะติดตั้งปลั๊กอินสำหรับกลุ่มได้อย่างไร?


147

ฉันต้องการลองปลั๊กอินสำหรับ Vim ที่ลิงก์ด้านล่าง จะเพิ่มการเน้นไวยากรณ์สำหรับไฟล์.hamlและ (อาจ).sass

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

ฉันทำอย่างนี้...

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

ฉันเปิด.hamlไฟล์เป็นกลุ่ม แต่ไม่มีการเน้น จะต้องมีขั้นตอนอื่นที่ฉันต้องทำ


7
G'day เปิดไวยากรณ์หรือไม่ (ถามคำถามที่ชัดเจน)
Rob Wells

2
ฉันใหม่สำหรับกลุ่ม ฉันจะเปิดไวยากรณ์ได้อย่างไร
อีธาน

5
@ethan ในโหมดปกติ:syntax on
Karl Guertin

2
คำตอบที่ดีที่นี่superuser.com/questions/404686/installing-plugins-in-vim
michael

คำถามที่สมบูรณ์แบบสำหรับ Vim QA ใหม่: area51.stackexchange.com/proposals/76728/ …
eckes

คำตอบ:


52

คำสั่งสองคำสั่งเหล่านั้นจะสร้าง~/.vim/vim-haml/ไดเร็กทอรีด้วยไดเร็กทอรี ftplugin, syntax, etc ไดเรกทอรีเหล่านั้นจะต้องอยู่ใน~/.vimไดเรกทอรีทันทีหรือ~/.vim/vim-hamlต้องการเพิ่มในรายการพา ธ ที่ vim ค้นหาปลั๊กอิน

แก้ไข:

ฉันเพิ่งตัดสินใจที่จะปรับแต่ง vim config ของฉันและในกระบวนการทำให้การเขียนไฟล์ rakefile ต่อไปนี้ ใช้งานได้กับ Mac / Linux เท่านั้น แต่ข้อดีกว่าcpรุ่นนี้คือมันปลอดภัยอย่างสมบูรณ์ (symlink ไม่เขียนทับไฟล์ที่มีอยู่ถอนการติดตั้งเพียงลบ symlink) และง่ายต่อการอัปเดตสิ่งต่าง ๆ

# 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

ตรวจสอบให้แน่ใจว่า.vimไฟล์จริงนั้นมีอยู่~/.vim/plugin/


17
ขอบคุณสำหรับคำตอบง่ายๆ!
Drew LeSueur

ใช่ฉันเดาว่านี่แก้คำถามส่วนใหญ่ของผู้ใช้ได้
ฝ่ายขาย Dielson

หรือในไดเรกทอรีย่อยใด ๆ ภายใต้ ~ / .vim / plugin /?
RajaRaviVarma

เพื่อความชัดเจน: เมื่อคุณพูด~/.vimคุณหมายถึงว่ามีการติดตั้งเป็นกลุ่มใช่มั้ย สถานที่ที่เก็บไว้ใน$VIM(เช่นถ้าคุณ:echom $VIMนั่นคือสถานที่)
คดีของกองทุนโมนิกา

@QPaysTaxes ในระบบของฉันแสดงให้เห็นว่า:echom $VIM /usr/share/vimแต่คำตอบนี้ใช้คำนำหน้า~ เพื่อแนะนำการติดตั้งปลั๊กอินในไดเรกทอรีบ้านของผู้ใช้
Paul Rougieux

45

ในการขยายการตอบกลับของ Karl Vim จะค้นหาชุดไดเรคทอรีของไฟล์รันไทม์เฉพาะ :set runtimepath?ท่านสามารถเข้าดูชุดของไดเรกทอรีที่ผ่าน เพื่อบอกให้ Vim ดูภายใน~/.vim/vim-hamlคุณจะต้องเพิ่ม

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

~/.vimrcที่คุณ คุณอาจต้องการให้สิ่งต่อไปนี้ในของคุณ~/.vimrcเพื่อเปิดใช้งานฟังก์ชั่นทั้งหมดของ vim-haml

filetype plugin indent on
syntax on

คุณสามารถอ้างถึงหัวข้อ'runtimepath'และ:filetypeความช่วยเหลือใน Vim สำหรับข้อมูลเพิ่มเติม


1
คือ "ไวยากรณ์บน" หรือ ": ไวยากรณ์บน" หรือไม่ เช่นเดียวกันกับ "filetype" / ": filtype"
อีธาน

4
เมื่อคุณพิมพ์พวกเขาแบบโต้ตอบคุณต้อง ':' เพื่อเข้าสู่โหมด cmdline ในสคริปต์พวกเขาไม่จำเป็นเพราะสคริปต์อยู่ในโหมด cmdline ดังนั้นจะพูด ด้วยเหตุนี้จึงเป็นวิธีปฏิบัติมาตรฐานในการละเว้น ':' ในสคริปต์เนื่องจากจะเพิ่มความยุ่งเหยิงที่ไม่จำเป็น
jamessan

19

ฉันคิดว่าคุณควรจะมีลักษณะที่เป็นปลั๊กอินเชื้อโรค หลังจากคุณติดตั้งสิ่งนี้แล้วคุณสามารถเก็บปลั๊กอินทั้งหมดของคุณไว้ในโฟลเดอร์ที่แยกต่างหากใน ~ / .vim / bundle / และ Pathogen จะดูแลการโหลด

หรือมิฉะนั้นคุณอาจต้องการVundleซึ่งมีฟังก์ชั่นที่คล้ายกัน (พร้อมโบนัสเพิ่มเติมของการอัปเดตอัตโนมัติจากปลั๊กอินใน GitHub)


2

อัปเดต (เหมือน 2019):

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

คำอธิบาย (จาก:h packโฆษณา:h packages):

  1. runtimepathไดเรกทอรีทั้งหมดที่พบจะมีการเพิ่ม พวกเขาจะต้องอยู่ใน ~ / .vim / pack / what / start [คุณสามารถเปลี่ยนแปลงอะไรก็ได้]
  2. ปลั๊กอินที่พบในpluginsdir runtimepathนั้นมีที่มา

ดังนั้นการโหลดปลั๊กอินนี้เมื่อเริ่มต้น (จึงเป็นชื่อเริ่มต้น)

คุณยังสามารถรับปลั๊กอินเสริม (เต็มไปด้วย:packadd) หากคุณใส่ไว้ใน ~ / .vim / pack / bundle / opt


1
คำอธิบายอย่างละเอียดน่าจะไปได้ไกล แต่นี่เป็นวิธีที่ฉันชอบดังนั้นขอให้
โหวต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.