把vim變成IDE
Last updated
Was this helpful?
Last updated
Was this helpful?
Vundle 是一個可以自動下載、安裝與管理 Vim plugins 的工具,讓 Vim 的使用者可以很方便的使用各種 plugins。 通常一個大型的 programming IDE,核心也是從文字編輯器開始,延伸其他的功能,合併成一個完整的 IDE。
由於 Vundle 需要 git(用於下載 plugin)與 curl(用於搜尋 plugin)工具,所以在安裝 Vundle 之前要先安裝這兩個工具,若在 Ubuntu Linux 中可以使用 apt 安裝:
sudo apt-get install git curl
mkdir -p ~/.vim/autoload ~/.vim/bundle
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
安裝 Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
基本 ~/.vimrc
"自動縮排
set autoindent
"語法高亮
syntax on
"自動檢測文件類型並加載相關設置
filetype plugin indent on
"不自動換行
set nowrap
"智能對齊方式
set smartindent
"一個tab是4個byte
set tabstop=4
"按一次tab前進4個byte
set softtabstop=4
"顯示行號
set number
"預設不產生備份文件
set nobackup
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'nvie/vim-flake8'
Plugin 'valloric/youcompleteme'
call vundle#end() " required
sudo apt install cmake
cd ~/.vim/bundle/youcompleteme
./install.py --clang-completer
最後,打開vim:
vim
並鍵入以下內容以安裝插件。
:PluginInstall
"自動縮排
set autoindent
"語法高亮
syntax on
"自動檢測文件類型並加載相關設置
filetype plugin indent on
"不自動換行
set nowrap
"智能對齊方式
set smartindent
"一個tab是4個byte
set tabstop=2
"按一次tab前進4個byte
set softtabstop=2
"顯示行號
set number
"預設不產生備份文件
set nobackup
set completeopt-=preview
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'nvie/vim-flake8'
" Python autocompletion, go to definition.
Plugin 'davidhalter/jedi-vim'
" Better autocompletion
Plugin 'Shougo/neocomplcache.vim'
" Automatically sort python imports
Plugin 'fisadev/vim-isort'
Plugin 't9md/vim-choosewin'
" Python and other languages code checker
Plugin 'scrooloose/syntastic'
" Paint css colors with the real color
Plugin 'lilydjwg/colorizer'
" Ack code search (requires ack installed in the system)
Plugin 'mileszs/ack.vim'
if has('python')
" YAPF formatter for Python
Plugin 'pignacio/vim-yapf-format'
endif
" XML/HTML tags navigation
Plugin 'vim-scripts/matchit.zip'
" Gvim colorscheme
Plugin 'vim-scripts/Wombat'
" Yank history navigation
Plugin 'vim-scripts/YankRing.vim'
"nodejs
Plugin 'myhere/vim-nodejs-complete'
call vundle#end() " required
" most of them not documented because I'm not sure how they work
" (docs aren't good, had to do a lot of trial and error to make
" it play nice)
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_ignore_case = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_enable_auto_select = 1
let g:neocomplcache_enable_fuzzy_completion = 1
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
let g:neocomplcache_fuzzy_completion_start_length = 1
let g:neocomplcache_auto_completion_start_length = 1
let g:neocomplcache_manual_completion_start_length = 1
let g:neocomplcache_min_keyword_length = 1
let g:neocomplcache_min_syntax_length = 1
" complete with workds from any opened file
let g:neocomplcache_same_filetype_lists = {}
let g:neocomplcache_same_filetype_lists._ = '_'
Or use Vundle:
:BundleInstall moll/vim-node
:BundleInstall 'nikvdp/ejs-syntax'
建立以下的.vimrc
syntax on
set nocompatible
set smartindent
set shiftwidth=4
set backspace=indent,eol,start
set ruler
set number
set showcmd
set incsearch
set hlsearch
set hls
set ic
set pastetoggle=<F12>
set enc=utf8
set mouse=a
filetype off
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle
"-------------- PLUGINS STARTS -----------------
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'altercation/vim-colors-solarized'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'scrooloose/syntastic'
Plugin 'xolox/vim-misc'
Plugin 'xolox/vim-easytags'
Plugin 'majutsushi/tagbar'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'vim-scripts/a.vim'
Plugin 'airblade/vim-gitgutter'
Plugin 'tpope/vim-fugitive'
Plugin 'Raimondi/delimitMate'
Plugin 'christoomey/vim-tmux-navigator'
Plugin 'jez/vim-c0'
Plugin 'jez/vim-ispc'
Plugin 'kchmck/vim-coffee-script'
Plugin 'flazz/vim-colorschemes'
call vundle#end()
"-------------- PLUGINS END --------------------
filetype plugin indent on
"----- GENERAL SETTINGS-------
set laststatus=2
let g:airline_powerline_fonts = 1
let g:airline_detect_paste=1
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme='solarized'
set background=dark
let g:solarized_termcolors=256
colorscheme solarized
"---------NERD-TREE SETTINGS----------
nmap <silent> <leader>t :NERDTreeTabsToggle<CR>
let g:nerdtree_tabs_open_on_console_startup = 1
"-------- SYNTASTIC SETTINGS---------
let g:syntastic_error_symbol = '✘'
let g:syntastic_warning_symbol = "▲"
augroup mySyntastic
au!
au FileType tex let b:syntastic_mode = "passive"
augroup END
"-------- TAGS SETTINGS --------------------------------
let g:easytags_events = ['BufReadPost', 'BufWritePost']
let g:easytags_async = 1
let g:easytags_dynamic_files = 2
let g:easytags_resolve_links = 1
let g:easytags_suppress_ctags_warning = 1
let g:tagbar_autoclose=2
nmap <silent> <leader>b :TagbarToggle<CR>
"autocmd BufEnter * nested :call tagbar#autoopen(0)
"---------GIT SETTINGS--------------
hi clear SignColumn
let g:airline#extensions#hunks#non_zero_only = 1
"----------DELIMITEMATE SETTINGS-----------------
let delimitMate_expand_cr = 1
augroup mydelimitMate
au!
au FileType markdown let b:delimitMate_nesting_quotes = ["`"]
au FileType tex let b:delimitMate_quotes = ""
au FileType tex let b:delimitMate_matchpairs = "(:),[:],{:},`:'"
au FileType python let b:delimitMate_nesting_quotes = ['"', "'"]
augroup END
"-----------TMUX SETTINGS--------------
let g:tmux_navigator_save_on_switch = 2
sudo apt-get install exuberant-ctags
安裝 color solarized
cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git
vim +PluginInstall +qall
python
nodejs