vim 由淺入淺
TRANSCRIPT
由淺入淺hydai@htcg 2015/11/8
哈秋 <3hachu.cat
簡單介紹⼀一下來歷
傳說中的編輯器之神
▸ ⽂文字編輯器
▸ 基本上不需要滑⿏鼠就可以操作
▸ ⾼高度客製化,想怎麼改就怎麼改
▸ ⼀一堆神奇的 Plugin 更加強化功能
▸ 多數的⼯工作站上有機會遇⾒見他
▸ 學習曲線,頗陡
$ vim # 開啟 vim
$ vim file # 開啟 file
介紹 vim mode
Normal mode
Start
i,I,a,A,o,OInsert mode
<ESC>
Bottom-line mode
: <ENTER>
⼀一進⼊入是 normal mode
按下 i 進⼊入 insert mode
按下 <ESC> 回到 normal mode
按下 : 進⼊入 bottom-line mode
在 normal mode 移動游標C-f Page upC-b Page downC-u Half page upC-d Half page downgg 移到檔案開頭G 移到檔案結尾zz 將游標所在該⾏行 移動到螢幕中間numG 移到第 num ⾏行
在 normal mode ⽂文字處理
x deleteX backspacedd 刪除或剪下游標在的那⼀一⾏行yy 複製游標在的那⼀一⾏行p 貼上前⼀一個剪下或複製的值u undoC-r redo
存檔離開
:w 存檔:q 離開:wq 存檔並離開:q! 強⾏行離開,會遺失為儲存的資料
搜尋字串
/string 往後搜尋字串?string 往前搜尋字串n 前往下⼀一個結果N 前往上⼀一個結果
分割視窗:split ⽔水平分割:split file 將開啟檔案放到⽔水平分割視窗中:vsplit 垂直分割:vsplit 將開啟檔案放到垂直分割視窗中C-w hjkl 移動游標到哪個分割視窗中
看起來很醜難⽤用呀?真的是編輯器之神?
你可能會這樣想
你沒裝插件、沒客制化當然不夠好⽤用囉~
不可質疑 Vim ⼤大神
撰寫你⾃自⼰己的 vimrc 吧!
vimrc 通常會放在你的家⺫⽬目錄 好⽐比說 /home/hydai/.vimrcvim 有許多的功能選項 可以直接從 bottom-line mode 那邊進⾏行輸⼊入寫⼊入 vimrc 則為⼀一啟動就載⼊入這些設定
General 設定
" 這是註解filetype plugin indent on "偵測檔案格式syntax on "syntax highlightscriptencoding utf8 "設定編碼 utf8set mouse=a "開啟滑⿏鼠模式set background=dark "以深⾊色為底
Vim UI 設定
set number "顯⽰示⾏行號set showmode "顯⽰示⺫⽬目前模式
set cursorline "在當前⾏行下顯⽰示標記" 以下兩⾏行會更加 highlight 當前⾏行highlight clear SignColumnhighlight clear LineNr
Vim UI 設定 - con't
set showcmd "顯⽰示輸⼊入的指令set showmatch "對應的括弧
set hlsearch "highlight searchset smartcase "同下 set ignorecase "忽略⼤大⼩小寫搜尋
Vim Formatting 設定
set autoindent "⾃自動縮排set smartindent "智慧縮排
set shiftwidth=4 "讓縮排是四格空⽩白set tabstop=4 "內縮是四個欄位set softtabstop=4 "backspace可刪除tab
Vim Formatting 設定
set expandtab "⽤用空⽩白取代 tab
autocmd FileType make setlocal noexpandtab
"上⾯面這⾏行是為了編輯 makefile 時保持使⽤用 tab
Key binding 設定 (leader)let mapleader = ',' " 讓 , 作為指令的開頭
" Toggle highlight search
nmap <leader>/ :set hlsearch! hlsearch?<CR>
" Toggle paste mode
nmap <leader>p :set invpaste paste?<CR>
Key binding 設定 (indent)" Visual shifting
vnoremap < <gv
vnoremap > >gv
⽅方便的設定" 開啟檔案可以回到上次離開的游標位置autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
" 能標記出怪怪的空⽩白位置
set list
set listchars=tab:›\ ,trail:•,extends:#,nbsp:.
看了這麼多可怕的東⻄西還沒加上插件喔( ̄▽ ̄)
覺得疲憊了嗎?
使⽤用 Vundle 來做套件管理吧!
很久很久以前,裝套件是直接把插件的檔案放進去某個特定位置
要控管、要升級都算是⼀一個⼩小⼩小的惡夢於是有⼈人做出了裝備介⾯面,讓⼤大家可以輕鬆處理
在這麼多套套件管理的⼯工具,我選擇 Vundle他使⽤用上算是直覺的⼯工具
起⼿手式 - 安裝 Vundle
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
接著要進去你的 vimrc 中把設定檔案放好喔!
替替 Vundle 設定 vimrc
set nocompatible " requiredfiletype off " required
set rtp+=~/.vim/bundle/Vundle.vim " Vundle 路徑call vundle#begin() " 以下放你想裝的 Plugin
Plugin 'VundleVim/Vundle.vim' " Vundle 控管⾃自⼰己Plugin 'L9' " Vim script library
call vundle#end() " 以上放你想裝的 Plugin
安裝 Plugin 吧!把剛才的 vimrc 存檔以後,再重新開啟打上 :PluginInstall他就會開始幫你裝囉
NERDTreenmap <leader>t :NERDTreeToggle<CR> " 快速開啟
NERDCommenter
註解該⾏行 <leader>cc
解除註解該⾏行 <leader>cu
直接 DEMO
syntastic幫你做語法檢查,要加上下⾯面的設定,直接 DEMO
ctrlp - 快速開檔案可惜 c-p 太常⽤用,我會改⽤用nnoremap <c-\> :CtrlP<CR>
airline - 下⾯面那條 status bar
airline - 下⾯面那條 status bar
solarized - 好看的color schema
要設定成 256 ⾊色,不然會醜醜的QQ下⾯面的順序要放對,不然看起來會怪怪的
Code snippet幫你補完各種常⽤用的 code block需要裝下⾯面三個插件
超強⼤大⾃自動補完裝下⾯面這三個套件,還需要加上些設定
資源推薦▸ 強⼤大插件整理區 Vim awesome
▸ http://vimawesome.com/
▸ Vim 內建的教學
▸ :help
▸ 超絕懶⼈人包
▸ https://github.com/spf13/spf13-vim
▸ vgod 的 Vim ⼊入⾨門圖解
▸ http://blog.vgod.tw/2009/12/08/vim-cheat-sheet-for-programmers/