Làm cách nào để cài đặt plugin cho vim?


147

Tôi muốn dùng thử plugin cho Vim được liên kết bên dưới. Nó thêm cú pháp tô sáng cho .hamlvà (có lẽ) .sasstập tin.

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

Tôi đã làm điều này ...

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

Tôi đã mở một .hamltập tin trong Vim, nhưng không có gì nổi bật. Phải có một bước nữa tôi cần thực hiện.


7
G'day, cú pháp được bật? (Để hỏi điều hiển nhiên)
Rob Wells

2
Tôi mới đến Vim. Làm cách nào để chuyển cú pháp?
Ethan

5
@ethan ở chế độ bình thường,:syntax on
Karl Guertin


Câu hỏi hoàn hảo cho Vim QA mới: area51.stackexchange.com/proposeals/76728/NH
eckes

Câu trả lời:


52

Hai lệnh này sẽ tạo một ~/.vim/vim-haml/thư mục chứa các thư mục ftplugin, cú pháp, v.v. Những thư mục đó cần phải ngay lập tức trong ~/.vimthư mục thích hợp hoặc ~/.vim/vim-hamlcần được thêm vào danh sách các đường dẫn mà vim tìm kiếm bổ trợ.

Biên tập:

Gần đây tôi đã quyết định điều chỉnh cấu hình vim của mình và trong quá trình viết lên rakefile sau đây. Nó chỉ hoạt động trên Mac / Linux, nhưng ưu điểm so với cpcác phiên bản là nó hoàn toàn an toàn (symlink không ghi đè lên các tệp hiện có, chỉ gỡ cài đặt xóa liên kết tượng trưng) và dễ dàng cập nhật mọi thứ.

# 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

Đảm bảo rằng .vimtệp thực sự nằm trong~/.vim/plugin/


17
Cảm ơn câu trả lời đơn giản!
Drew LeSueur

Có, tôi đoán điều này giải quyết được hầu hết các câu hỏi của người dùng.
Doanh số Dielson

Hoặc trong bất kỳ thư mục con nào dưới ~ / .vim / plugin /?
RajaRaviVarma

Để rõ ràng: khi bạn nói ~/.vim, bạn có nghĩa là bất cứ nơi nào vim được cài đặt, phải không? Địa điểm được lưu trữ trong $VIM(ví dụ nếu bạn :echom $VIM, đó là địa điểm)
Vụ kiện của Quỹ Monica

@QPaysTaxes trên hệ thống của tôi :echom $VIMhiển thị /usr/share/vim. Nhưng câu trả lời này sử dụng tiền tố ~ để đề xuất cài đặt plugin trong thư mục chính của người dùng.
Paul Rougieux

45

Để mở rộng câu trả lời của Karl, Vim tìm trong một tập hợp các thư mục cụ thể cho các tệp thời gian chạy của nó. Bạn có thể thấy tập hợp các thư mục thông qua :set runtimepath?. Để bảo Vim cũng nhìn vào bên trong, ~/.vim/vim-hamlbạn sẽ muốn thêm

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

để của bạn ~/.vimrc. Bạn cũng có thể muốn những thứ sau trong bạn ~/.vimrckích hoạt tất cả các chức năng được cung cấp bởi vim-haml.

filetype plugin indent on
syntax on

Bạn có thể tham khảo 'runtimepath':filetypecác chủ đề trợ giúp trong Vim để biết thêm thông tin.


1
Là "cú pháp trên" hay ": cú pháp trên"? Tương tự như vậy với "filetype" / ": filtype".
Ethan

4
Khi bạn nhập chúng một cách tương tác, bạn cần ':' để vào chế độ cmdline. Trong một tập lệnh, chúng không cần thiết vì tập lệnh ở chế độ cmdline, có thể nói như vậy. Do đó, đó là cách thực hành tiêu chuẩn để bỏ qua các tập lệnh ':' vì tất cả những gì nó làm là thêm sự lộn xộn không cần thiết.
jamessan

19

Tôi nghĩ bạn nên xem qua plugin Pathogen . Sau khi cài đặt xong, bạn có thể giữ tất cả các plugin của mình trong các thư mục riêng biệt trong ~ / .vim / bundle / và Pathogen sẽ đảm nhiệm việc tải chúng.

Hoặc, thay vào đó, có lẽ bạn sẽ thích Vundle , cung cấp chức năng tương tự (có thêm phần thưởng cập nhật tự động từ các plugin trong github).


2

Cập nhật (như năm 2019):

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

Giải thích (từ :h packquảng cáo :h packages):

  1. Tất cả các thư mục tìm thấy được thêm vào runtimepath. Chúng phải ở ~ / .vim / pack / anything / start [bạn chỉ có thể thay đổi bất cứ điều gì].
  2. các plugin được tìm thấy trong pluginsthư mục trong runtimepathcó nguồn gốc.

Vì vậy, điều này tải plugin khi bắt đầu (do đó tên bắt đầu).

Bạn cũng có thể nhận được plugin tùy chọn (được tải với :packadd) nếu bạn đặt chúng vào ~ / .vim / pack / bundle / opt


1
Giải thích chi tiết sẽ đi một chặng đường dài, nhưng đây là phương pháp ưa thích của tôi, vì vậy hãy có một upvote
D. Ben Knoble
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.