一、配置終端
solarized http://ethanschoonover.com/solarized
簡單配置腳本:
#!/bin/sh git clone git://github.com/altercation/solarized.git cd solarized osname=$(uname -s); case $osname in "Darwin" ) echo $osname cd osx-terminal.app-colors-solarized ./"Solarized Dark ansi.terminal" ;; "Linux" ) echo $osname ;; esac
官網有比較詳細介紹。
二、配置vim
vundle https://github.com/gmarik/vundle
這是個vim插件管理神器,有了它可以方便安裝各種插件
我的配置文件:
set nocompatible " be iMproved filetype off " required! set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' " My bundles here: " " original repos on GitHub Bundle 'tpope/vim-fugitive' Bundle 'Lokaltog/vim-easymotion' Bundle 'rstacruz/sparkup', {'rtp': 'vim/'} Bundle 'tpope/vim-rails.git' " vim-scripts repos Bundle 'L9' Bundle 'FuzzyFinder' Bundle 'Solarized' " non-GitHub repos Bundle 'git://git.wincent.com/command-t.git' " Git repos on your local machine (i.e. when working on your own plugin) "Bundle 'file:///Users/gmarik/path/to/plugin' " ... filetype plugin indent on " required! " " Brief help " :BundleList - list configured bundles " :BundleInstall(!) - install (update) bundles " :BundleSearch(!) foo - search (or refresh cache first) for foo " :BundleClean(!) - confirm (or auto-approve) removal of unused bundles " " see :h vundle for more details or wiki for FAQ " NOTE: comments after Bundle commands are not allowed. " set nu syntax enable set hlsearch set showmode set ruler set tabstop=4 set shiftwidth=4 set encoding=utf-8 set background=dark colorscheme solarized
一篇比較詳細的文章
Git時代的VIM不完全使用教程-->http://beiyuu.com/git-vim-tutorial/
最近整理了VIM的配置,換上插件管理的神器-----Vundle,由他引發的VIM生態環境的改善,堪稱完美。遂打算寫一份簡單的教程,分享Git時代VIM新世界的美麗動人之處。對VIM有基礎的同學,可直接跳至插件管理部分。
VIM的模式
第一次使用VIM,會覺得無所適從,他並不像記事本,你敲什么鍵就顯示什么,理解VIM的需要明白他的兩種模式: - 命令模式 (Command Mode) - 編輯模式 (Insert Mode)
命令模式下,可以做移動、編輯操作;編輯模式則用來輸入。鍵入i
,o
,s
,a
等即可進入編輯模式,后面解釋原因。
模式的設計是VIM和其他編輯器最不同的地方,優勢和劣勢也全基於此而生。
基本操作
以下介紹的鍵盤操作,都是大小寫敏感的,並且要在命令模式下完成,需注意:
以字為單位的移動
h
向左移動一個字j
向下移動一行k
向上l
向右
這四個鍵在右手最容易碰到幾個位置,最為常用。
以詞為單位的移動
w
下一個word w(ord)W
下一個word(跳過標點)b
前一個word b(ackward)B
前一個word(跳過標點)e
跳到當前word的尾端 e(nd)
行移動
0
跳到當前行的開頭^
跳到當前行第一個非空字符$
跳到行尾
助記:0(第0個字符),^
和$
含義同正則表達式
段落移動
{
上一段(以空白行分隔)}
下一段(以空白行分隔)%
跳到當前對應的括號上(適用各種配對符號)
跳躍移動
/xxxx
搜索xxxx,然后可以用n
下一個,N
上一個移動#
向前搜索光標當前所在的字*
向后搜索光標當前所在的字fx
在當前行移動到光標之后第一個字符x的位置 f(ind)xgd
跳到光標所在位置詞(word)的定義位置 g(o)d(efine)gg
到文檔頂部G
到文檔底部:x
跳到第x行(x是行號)ctrl+d
向下翻頁 d(down)ctrl+u
向上翻頁 u(p)
基本編輯
修改
i
在光標當前位置向前插入 i(nsert)I
在本行第一個字符前插入a
在光標當前位置向后插入 a(fter)A
在本行末尾插入o
向下插入一行O
向上插入一行:w
保存:q
退出:wq
保存並退出
刪除
x
刪除當前字符dd
刪除當前行 d(elete)dw
刪除當前光標下的詞 d(elete)w(ord)
復制粘貼
yy
復制當前行 y(ank)yw
復制當前光標下的詞 y(ank)w(ord)p
粘貼 p(aste)P
粘貼在當前位置之前
進階操作
限於篇幅,在這里我僅介紹下我非常常用的幾個操作。
重復操作
因為VIM所有的操作都是原子化的,所以把這些操作程序化就非常簡單了:
5w
相當於按五次w
鍵;6j
下移6行,相當於按六次j;3J
大寫J,本來是將下一行與當前行合並,加上數量,就是重復操作3次;6dw
和d6w
結果是一樣,就是刪除6個word;- 剩下的無數情況,自己類推吧。
高效編輯
di"
光標在""之間,則刪除""之間的內容yi(
光標在()之間,則復制()之間的內容vi[
光標在[]之間,則選中[]之間的內容- 以上三種可以自由組合搭配,效率奇高,i(nner)
dtx
刪除字符直到遇見光標之后的第一個x
字符ytx
復制字符直到遇見光標之后的第一個x
字符
標記和宏(macro)
ma
將當前位置標記為a,26個字母均可做標記,mb
、mc
等等;'a
跳轉到a標記的位置;- 這是一組很好的文檔內標記方法,在文檔中跳躍編輯時很有用;
qa
將之后的所有鍵盤操作錄制下來,直到再次在命令模式按下q
,並存儲在a
中;@a
執行剛剛記錄在a
里面的鍵盤操作;@@
執行上一次的macro操作;- 宏操作是VIM最為神奇的操作之一,需要慢慢體會其強大之處;
VIM的基本操作,可以挖掘的東西非常多,不僅僅需要記憶,更需要自己去探索總結,熟練之后,效率會大幅度提升。后面會給出一些參考鏈接。
插件管理
Vundle
終於到這篇Blog我最想討論的部分了。VIM的強大不僅僅體現在操作的高效率,更有強大而充沛的插件做支援,插件豐富了之后,就面臨查找和管理的問題。
在遇見Vundle之前,我用Pathogen管理插件。Pathogen還算方便,只需要把相應插件,放在bundle
目錄下即可,不需要再像以前那樣逐個放置單獨的文件到相應目錄,大大節省了勞動力,管理起來也一目了然,覺得還不錯,至少比vimball那種需要執行命令安裝的方式好一些。
我真希望我早些遇見Vundle。Vundle受到Pathogen和Vimball的啟發,於是有了現在的模樣。Vundle的邏輯是這樣的:
- 在Vim Script選好你想要的插件;
- 在VIM的配置文件中寫一句
Bundle plugin_name
; - 執行一下Vundle的初始化命令,插件就裝好了;
- 升級和卸載也是同樣的簡單;
完美的世界!
Vundle的配置
Vundle的安裝很簡單:
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
然后寫配置文件.vimrc
:
set nocompatible " be iMproved
filetype off " required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle'gmarik/vundle'
" vim-scripts repos
Bundle 'vim-plugin-foo'
Bundle 'vim-plugin-bar'
filetype plugin indent on " required!
其中Bundle
后面的內容,就是插件的名字,插件維護在Vim-Script.org。
然后,打開VIM之后,可以輸入以下命令:
"安裝插件:
:BundleInstall
"更新插件:
:BundleInstall!
"卸載不在列表中的插件:
:BundleClean
現在大部分的插件都已經從Vim.org遷移到了Vim-Script.org,而且很多作者也認領了自己的插件,直接在這個Github的項目下更新,一個比Vim.org更科學更有效的生態環境,就這樣完美的形成了。
在此非常嚴重的感謝vim-scripts.org的創建者Scott Bronson,和Vundle的作者gmarik。他們的創新和分享精神,讓這個世界又美好了一些。
也感謝業界良心Github。Vim-Scripts.org整站就是用Github Pages建立維護的,對於個人來說,這是很好的選擇,有興趣的同學可以參看我之前的博客:使用Github Pages建獨立博客。
插件介紹
有了Vundle,再裝插件就是件享受的事情了。我常用的插件有:
#相較於Command-T等查找文件的插件,ctrlp.vim最大的好處在於沒有依賴,干凈利落
Bundle'ctrlp.vim'
#在輸入(),""等需要配對的符號時,自動幫你補全剩余半個
Bundle'AutoClose'
#神級插件,ZenCoding可以讓你以一種神奇而無比爽快的感覺寫HTML、CSS
Bundle'ZenCoding.vim'
#在()、""、甚至HTML標簽之間快速跳轉;
Bundle'matchit.zip'
#顯示行末的空格;
Bundle'ShowTrailingWhitespace'
#JS代碼格式化插件;
Bundle'_jsbeautify'
#用全新的方式在文檔中高效的移動光標,革命性的突破
Bundle'EasyMotion'
#自動識別文件編碼;
Bundle'FencView.vim'
#必不可少,在VIM的編輯窗口樹狀顯示文件目錄
Bundle'The-NERD-tree'
#NERD出品的快速給代碼加注釋插件,選中,`ctrl+h`即可注釋多種語言代碼;
Bundle'The-NERD-Commenter'
#解放生產力的神器,簡單配置,就可以按照自己的風格快速輸入大段代碼。
Bundle'UltiSnips'
#讓代碼更加易於縱向排版,以=或,符號對齊
Bundle'Tabular'
#迄今位置最好的自動VIM自動補全插件了吧
#Vundle的這個寫法,是直接取該插件在Github上的repo
Bundle'Valloric/YouCompleteMe'
以上插件可以在vim-script.org找到源碼和文檔,ZenCoding和EasyMotion演示點鏈接,你會心動的。
.vimrc配置
因為配置不斷在更新,所以放上我的配置的鏈接:.vimrc配置
更多
VIM在一開始會覺得非常不習慣,一定要堅持下去,收獲的會更多,不僅僅是在裝大俠方面的哦~
關於VIM的使用,這篇博客僅僅介紹了很小的一部分,網絡上還有大量朋友總結的心得,常學常有收獲:
- Practical Vim,強烈推薦的一本系統介紹VIM的書籍
- Vim Cheat Sheet,有VIM的各種助記圖,可以作為桌面
- Vimer的程序世界,不錯的站,博主持續鑽研VIM各種技巧
- 網友狂人收集的vim資料鏈接
- Best of Vim Tips
- 面向前端開發者和TextMate粉絲的vim配置
- Vim代碼折疊簡介
- 挑選 Vim 顏色(Color Scheme)
- vimium,用VIM的操作習慣來控制Chrome的插件