Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
由淺入淺
hydai@htcg 2015/11/8
哈秋 <3
hachu.cat
hydai
我叫海帶,可以吃的那種
你可以透過下⾯面的⽅方式找到我
hydai@gapp.nthu.edu.tw
@hydai on GitHub
本投影⽚片採⽤用以下授權
簡單介紹⼀一下來歷
傳說中的編輯器之神
▸ ⽂文字編輯器
▸ 基本上不需要滑⿏鼠就可以操作
▸ ⾼高度客製化,想怎麼改就怎麼改
▸ ⼀一堆神奇的 Plugin 更加強化功能
▸ 多數的⼯工作站上有機會遇⾒見他
▸ 學習曲線,頗陡
$ vim # 開啟 vim
$ vim file # 開啟 file
介紹 vim mode
Normal mode
Start
i,I,a,A,o,O
Insert mode
<ESC>
Bottom-line
mode
: <ENTER>
⼀一進⼊入是 normal mode
按下 i 進⼊入 insert mode
按下 <ESC> 回到 normal mode
按下 : 進⼊入 bottom-line mode
在 normal mode 移動游標
C-f Page up
C-b Page down
C-u Half page up
C-d Half page down
gg 移到檔案開頭
G 移到檔案結尾
zz 將游標所在該⾏行
移動到螢幕中間
nu...
在 normal mode ⽂文字處理
x delete
X backspace
dd 刪除或剪下游標在的那⼀一⾏行
yy 複製游標在的那⼀一⾏行
p 貼上前⼀一個剪下或複製的值
u undo
C-r redo
存檔離開
:w 存檔
:q 離開
:wq 存檔並離開
:q! 強⾏行離開,會遺失為儲存的資料
搜尋字串
/string 往後搜尋字串
?string 往前搜尋字串
n 前往下⼀一個結果
N 前往上⼀一個結果
分割視窗
:split ⽔水平分割
:split file 將開啟檔案放到⽔水平分割視窗中
:vsplit 垂直分割
:vsplit 將開啟檔案放到垂直分割視窗中
C-w hjkl 移動游標到哪個分割視窗中
看起來很醜難⽤用呀?
真的是編輯器之神?
你可能會這樣想
你沒裝插件、沒客制化
當然不夠好⽤用囉~
不可質疑 Vim ⼤大神
撰寫你⾃自⼰己的 vimrc 吧!
vimrc 通常會放在你的家⺫⽬目錄
好⽐比說 /home/hydai/.vimrc
vim 有許多的功能選項
可以直接從 bottom-line mode
那邊進⾏行輸⼊入
寫⼊入 vimrc 則為⼀一啟動...
General 設定
" 這是註解
filetype plugin indent on "偵測檔案格式
syntax on "syntax highlight
scriptencoding utf8 "設定編碼 utf8
set mouse=a...
Vim UI 設定
set number "顯⽰示⾏行號
set showmode "顯⽰示⺫⽬目前模式
set cursorline "在當前⾏行下顯⽰示標記
" 以下兩⾏行會更加 highlight 當前⾏行
highlight clear...
Vim UI 設定 - con't
set showcmd "顯⽰示輸⼊入的指令
set showmatch "對應的括弧
set hlsearch "highlight search
set smartcase "同下
set ignorec...
Vim Formatting 設定
set autoindent "⾃自動縮排
set smartindent "智慧縮排
set shiftwidth=4 "讓縮排是四格空⽩白
set tabstop=4 "內縮是四個欄位
set softt...
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...
Key binding 設定 (indent)
" Visual shifting
vnoremap < <gv
vnoremap > >gv
⽅方便的設定
" 開啟檔案可以回到上次離開的游標位置
autocmd BufReadPost * if line("'"") > 1 &&
line("'"") <= line("$") | exe "normal! g`"" | endif
...
看了這麼多可怕的東⻄西
還沒加上插件喔( ̄▽ ̄)
覺得疲憊了嗎?
使⽤用 Vundle 來做套件管理吧!
很久很久以前,
裝套件是直接把插件的檔案放進去某個特定位置
要控管、要升級都算是⼀一個⼩小⼩小的惡夢
於是有⼈人做出了裝備介⾯面,讓⼤大家可以輕鬆處理
在這麼多套套件管理的⼯工具,我選擇 Vundle
他...
起⼿手式 - 安裝 Vundle
$ git clone https://github.com/VundleVim/
Vundle.vim.git ~/.vim/bundle/Vundle.vim
接著要進去你的 vimrc 中把設定檔案放好喔!
替 Vundle 設定 vimrc
set nocompatible " required
filetype off " required
set rtp+=~/.vim/bundle/Vundle.vim " Vundle 路徑
call v...
安裝 Plugin 吧!
把剛才的 vimrc 存檔以後,再重新開啟
打上 :PluginInstall
他就會開始幫你裝囉
NERDTree
nmap <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
▸ v...
Upcoming SlideShare
Loading in …5
×

Vim 由淺入淺

1,353 views

Published on

在 HTCG 2015/11/8 的聚會中,向大家簡介了 Vim 。
從基礎的操作入手,開始學習透過 vimrc 客製化自己的設定,利用 Vundle 管理套件等。

Published in: Technology
  • Be the first to comment

Vim 由淺入淺

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

×