refer to:
vim: https://github.com/vim/vim
command-t: https://github.com/wincent/command-t#readme
fuzzyfinder: https://github.com/junegunn/fzf.vim/
vim-plug: https://github.com/junegunn/vim-plug
多个plugin: https://www.makeuseof.com/best-vim-plugin-managers/
https://vi.stackexchange.com/questions/388/what-are-the-differences-between-the-vim-plugin-managers
下载编译和安装vim
https://souhaiebtar.github.io/how-to-compile-vim-and-install-command-t-extension/
先保证你的ruby版本是2.7.0 的。 (安装asdf, ruby的过程略 )
安装支持 vim-ruby的包:
https://stackoverflow.com/questions/3794895/installing-vim-with-ruby-support-ruby
sudo apt install vim-nox (这个包是支持到ruby 2.7.0 patch 0 的)
asdf global ruby 2.7.0
安装 python3
git clone https://github.com/vim/vim.git
./configure --prefix=/usr/local \ --with-x \ --disable-nls \ --disable-netbeans \ --disable-gui \ --enable-multibyte \ --enable-rubyinterp \ --enable-python3interp \ --with-features=huge \ --with-tlib=ncurses \ --enable-fail-if-missing
make && sudo make install
使用

编辑 .vimrc
filetype on
set langmenu=none
set fileencodings=utf-8
set fileencoding=utf-8
set encoding=utf8
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=2
set number
set autoindent
set hlsearch
set incsearch
set encoding=utf-8
" highlight Normal ctermfg=white ctermbg=cyan
set nowrap
syntax enable
let g:proj_window_width=5
set laststatus=2
" map <C-T> :FufFile<CR>
map <C-E> :MRU<CR>
map <C-S-M> :Rmodel<CR>
map <C-S-C> :Rcontroller<CR>
map <C-S-U> :Runit<CR>
map <C-S-L> :Rfunctional<CR>
map <C-H> :Rhelper<CR>
map <C-V> :Rview<CR>
map <C-J> :ZoomWin<CR>
" Strip trailing whitespace
function! <SID>StripTrailingWhitespaces()
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
%s/\s\+$//e
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
" match Todo /\s\+$/
filetype plugin on
let mapleader = ","
" THE VIM OUTLINER (TVO)
" defaults:
let otl_install_menu=1
let no_otl_maps=0
let no_otl_insert_maps=0
" overrides:
let otl_bold_headers=0
let otl_use_thlnk=0
" au BufWinLeave *.otl mkview
" au BufWinEnter *.otl silent loadview
let maplocalleader = ","
""Only do this part when compiled with support for autocommands.
"if has("autocmd")
" autocmd Filetype java setlocal omnifunc=javacomplete#Complete
"endif
set nocompatible " be iMproved
filetype off " required!
" ============== Vundle part =================
set rtp+=~/.vim/bundle/vundle/
call plug#begin()
Plug 'gmarik/vundle'
Plug 'tpope/vim-fugitive'
Plug 'Lokaltog/vim-easymotion'
Plug 'tpope/vim-rails'
Plug 'vim-scripts/matchit.zip'
Plug 'ecomba/vim-ruby-refactoring'
Plug 'vim-scripts/L9'
Plug 'vim-scripts/FuzzyFinder'
Plug 'wincent/command-t'
Plug 'vim-scripts/YankRing.vim'
Plug 'tpope/vim-vividchalk'
Plug 'preservim/nerdcommenter'
Plug 'preservim/nerdtree'
Plug 'kchmck/vim-coffee-script'
Plug 'yegappan/mru'
Plug 'skwp/greplace.vim'
Plug 'tomlion/vim-solidity'
call plug#end()
colorscheme vividchalk
set background=light
set background=dark
filetype plugin indent on " required!
map <S-F> <Leader><Leader>f
map <Leader>a :YRShow<CR>
map <Leader>t :NERDTree<CR>
map <Leader>q :q<CR>
map <Leader>f :Rfixture<CR>
map <Leader>rj :Rjavascript<CR>
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile --join appstore/static/javascripts/angular/controllers.js appstore/static/javascripts/angular/controllers.coffee appstore/static/javascripts/angular/tabs/*coffee appstore/static/javascripts/angular/applications/*coffee appstore/static/javascripts/angular/users/*coffee appstore/static/javascripts/angular/commons/*coffee
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile appstore/static/javascripts/angular/app.coffee appstore/static/javascripts/angular/directives.coffee appstore/static/javascripts/angular/filters.coffee appstore/static/javascripts/angular/services.coffee
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile --join tvboxcms/static/javascripts/angular/controllers.js tvboxcms/static/javascripts/angular/controllers.coffee tvboxcms/static/javascripts/angular/tabs/*coffee tvboxcms/static/javascripts/angular/applications/*coffee tvboxcms/static/javascripts/angular/users/*coffee tvboxcms/static/javascripts/angular/commons/*coffee
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile tvboxcms/static/javascripts/angular/app.coffee tvboxcms/static/javascripts/angular/directives.coffee tvboxcms/static/javascripts/angular/filters.coffee tvboxcms/static/javascripts/angular/services.coffee
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile --join m-cms-preview/static/javascripts/angular/controllers.js m-cms-preview/static/javascripts/angular/controllers.coffee m-cms-preview/static/javascripts/angular/tabs/*coffee m-cms-preview/static/javascripts/angular/applications/*coffee m-cms-preview/static/javascripts/angular/users/*coffee m-cms-preview/static/javascripts/angular/commons/*coffee
"autocmd BufWritePost,FileWritePost *.coffee :silent !coffee --compile m-cms-preview/static/javascripts/angular/app.coffee m-cms-preview/static/javascripts/angular/directives.coffee m-cms-preview/static/javascripts/angular/filters.coffee m-cms-preview/static/javascripts/angular/services.coffee
"
autocmd BufWritePost,FileWritePost *.raml silent! !raml2html doc/api.raml > public/api_doc.html
"
"
"" For fuf plugin , ignore the node_modules folder
" Truth be told, I don't remember what these do, but I must have
" found them necessary back when I installed fuzzyfinder years ago
let s:slash = '[/\\]'
let s:startname = '(^|'.s:slash.')'
let s:endname = '($|'.s:slash.')'
" directories and extensions to ignore when listing files
" these contain a lot of Python-isms, yours will probably vary
let s:extension = '\.bak|\.dll|\.exe|\.o|\.pyc|\.pyo|\.swp|\.swo'
let s:dirname = 'build|deploy|dist|vms|\.bzr|\.git|\.hg|\.svn|.+\.egg-info|node_modules|logs|log|tmp|coverage'
let g:fuf_file_exclude = '\v'.'('.s:startname.'('.s:dirname.')'.s:endname.')|(('.s:extension.')$)'
let g:fuf_dir_exclude = '\v'.s:startname.'('.s:dirname.')'.s:endname
" limit number of displayed matches
" (makes response instant even on huge source trees)
let g:fuf_enumeratingLimit = 200
然后下载 vim-plug 插件:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
进入vim ,然后 :PlugInstall
即可。
command-t的使用
$ vim --version 看一下是否支持ruby

asdf global ruby 2.7.0 切记这一点
cd ~/.vim/plugged/command-t/ruby/command-t/ext/command-t
ruby extconf.rb && make clean && make
sudo make install
就安装好了。
