Top Banner
VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
243

Vim Hacks

Sep 08, 2014

Download

Technology

Yo-An Lin

Vim Hacks @ COSCUP
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Vim Hacks

VIM HacksWhy Vim

Vim 能幫助我們什麼 c9s / Cornelius林佑安

AIINK.com

Page 2: Vim Hacks

編輯器

Page 3: Vim Hacks

It doesn’t matter

Page 4: Vim Hacks

It does matter

Page 5: Vim Hacks

好的編輯器帶你上天堂差的編輯器帶你住套房

Page 6: Vim Hacks

敏捷開發

Page 7: Vim Hacks

敏捷

Page 8: Vim Hacks

太多選擇

Page 9: Vim Hacks

想當年...

Page 10: Vim Hacks

年輕不懂事

Page 11: Vim Hacks

第一次

Page 12: Vim Hacks

MicrosoftVisual Studio

Page 13: Vim Hacks

Eclipse

Page 14: Vim Hacks

Code Block

Page 15: Vim Hacks

Notepad++

Page 16: Vim Hacks

太多

Page 17: Vim Hacks

怎麼都沒有理想中的編輯器呢?

鬱卒了....

Page 18: Vim Hacks

於是....

Page 19: Vim Hacks

• 繼續嘗試其他編輯器

Page 20: Vim Hacks

• 繼續嘗試其他編輯器• 花銀子買 IDE , Editor

Page 21: Vim Hacks

• 繼續嘗試其他編輯器• 花銀子買 IDE , Editor

• 又再寫一個 XXX Editor ..

Page 22: Vim Hacks

• 繼續嘗試其他編輯器• 花銀子買 IDE , Editor

• 又再寫一個 XXX Editor ..

• 又或者....

Page 23: Vim Hacks

筆記本

Page 24: Vim Hacks

自從不用 Microsoft Windows 之後 ...

Page 25: Vim Hacks

GEdit

Page 26: Vim Hacks

Emacs

Page 27: Vim Hacks

TextMate

Page 28: Vim Hacks

VIM

Page 29: Vim Hacks
Page 30: Vim Hacks

最糟糕的編輯方式

Page 31: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

Page 32: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

Oops!

少了 “a”

Page 33: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 34: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 35: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 36: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 37: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 38: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 39: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 40: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 41: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 42: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 43: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 44: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 45: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

x N

Page 46: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

Page 47: Vim Hacks

#!/usr/bin/env perlmy $happiness = COS::CUP();

Page 48: Vim Hacks

#!/usr/bin/env perlmy $happiness = COS::CUP();

一百個類似的狀況 ?一百個類似的狀況 ?

Page 49: Vim Hacks

#!/usr/bin/env perlmy $happiness = COS::CUP();

一百個類似的狀況 ?

Page 50: Vim Hacks

浪費時間移動游標

Page 51: Vim Hacks

The VIM way...

Page 52: Vim Hacks

#!/usr/bin/env perlmy $hppiness = COS::CUP();

VIM:

F h

Page 53: Vim Hacks

#!/usr/bin/env perlmy $happiness = COS::CUP();

VIM:

a append

Page 54: Vim Hacks

VIM

Page 55: Vim Hacks

VIM 不是

Page 56: Vim Hacks

IDE

Page 57: Vim Hacks

不是...

Page 58: Vim Hacks
Page 59: Vim Hacks

也不是...

Page 60: Vim Hacks

強而有力!!!

Page 61: Vim Hacks

強而有力!!!

喔喔喔喔!!!

Page 62: Vim Hacks

VIM 是

Page 63: Vim Hacks

VI Improved

Page 64: Vim Hacks

進階編輯器

Page 65: Vim Hacks

提高

Page 66: Vim Hacks

文字編輯效率

Page 67: Vim Hacks

Learning Curve

Page 68: Vim Hacks

各種 Vim

Page 69: Vim Hacks

各種 Vim

• Vim

Page 70: Vim Hacks

各種 Vim

• Vim

• gVim

Page 71: Vim Hacks

各種 Vim

• Vim

• gVim

• gVim Easy

Page 72: Vim Hacks

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

Page 73: Vim Hacks

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

Page 74: Vim Hacks

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

• Vi in Bash

Page 75: Vim Hacks

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

• Vi in Bash

• etc ...

Page 76: Vim Hacks

Features

Page 77: Vim Hacks

1.編輯模式Mode

Page 78: Vim Hacks

四種以上編輯模式

Page 79: Vim Hacks

INSERTNORMALVISUALSELECT

... et cetera

Page 80: Vim Hacks

[Ii]NSERTNORMAL[Vv]ISUAL

ESC

Page 81: Vim Hacks

1.1 Normal Mode

Page 82: Vim Hacks

Motion

Page 83: Vim Hacks
Page 84: Vim Hacks

丟掉方向鍵吧

Page 85: Vim Hacks

節省移動時間

Page 86: Vim Hacks

請愛用

Page 87: Vim Hacks

HJKL←↓↑→

Page 88: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

Page 89: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

Cursor

Page 90: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

[{

Page 91: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

f@

Page 92: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

$

Page 93: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

^

Page 94: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

H 畫面最上方

Page 95: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

M畫面中間行

Page 96: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}L 畫面最下方

Page 97: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

修改至行尾

Page 98: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep }

sub func1 {

}

C並進入 Insert mode

Page 99: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

Page 100: Vim Hacks

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep /pattern/ , @list; }

sub func1 {

}

%

Page 101: Vim Hacks

:h motion.txt

Page 102: Vim Hacks

1.2 Insert Mode

Page 103: Vim Hacks

Editing text

Page 104: Vim Hacks

Insert Mode

• i : Insert text before the cursor

Page 105: Vim Hacks

• i : Insert text before the cursor

• I : Insert text before the first non-blank in the line

Insert Mode

Page 106: Vim Hacks

• i : Insert text before the cursor

• I : Insert text before the first non-blank in the line

• a : Append text after the cursor

Insert Mode

Page 107: Vim Hacks

• i : Insert text before the cursor

• I : Insert text before the first non-blank in the line

• a : Append text after the cursor

• A : Append text at the end of the line

Insert Mode

Page 108: Vim Hacks

1.3 Visual Mode

Page 109: Vim Hacks

Select region

Page 110: Vim Hacks

Visual Mode

• v : start Visual mode per character.

Page 111: Vim Hacks

Visual Mode

• v : start Visual mode per character.

• V : start Visual mode linewise.

Page 112: Vim Hacks

Visual Mode

• v : start Visual mode per character.

• V : start Visual mode linewise.

• Ctrl-v : start Visual mode blockwise.

Page 113: Vim Hacks

Visual Mode

• v : start Visual mode per character.

• V : start Visual mode linewise.

• Ctrl-v : start Visual mode blockwise.

接上 operator 如 y (yank) , d (delete) , c (change) ... etc

Page 114: Vim Hacks

2.語法標記Syntax Highlight Support

Page 115: Vim Hacks

/opt/local/share/vim/vim72 $ ls -1 syntax/ | wc -l 520

包含五百多種語法設定檔

Page 116: Vim Hacks

可自訂 Syntax

Page 117: Vim Hacks

~/.vim/syntax/[filetype].vim

Page 118: Vim Hacks

~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]

Page 119: Vim Hacks

~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]syn region [id] start=[re] end=[re]

Page 120: Vim Hacks

~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]syn region [id] start=[re] end=[re]syn keyword [id] [keyword] ...

Page 121: Vim Hacks

~/.vim/syntax/[filetype].vim

syn match [id] [re] [options]syn region [id] start=[re] end=[re]syn keyword [id] [keyword] ...

hi [id] guibg=[color] ctermfg=[color]

Page 122: Vim Hacks

:help syntax.txt

Page 123: Vim Hacks

3.編碼支援ENCODING

Page 124: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

Page 125: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

設定檔案編碼清單

Page 126: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

設定檔案編碼清單 Vim 會從第一組編碼開始讀取檔案,若是失敗則會跳下一組編碼讀取檔案

Page 127: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

檔案編碼

Page 128: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

內部編碼

Page 129: Vim Hacks

:set fencs=utf-8,gbk,big5,euc-jp,utf-16le

:set fenc=utf-8 enc=utf-8 tenc=utf-8

Terminal 編碼

Page 130: Vim Hacks

:help encoding

Page 131: Vim Hacks

4. 快捷鍵Key Mapping

Page 132: Vim Hacks

:map:nmap:vmap:imap:smap :xmap... more

Page 133: Vim Hacks

:map (all)

:nmap (normal mode)

:vmap (visual mode)

:imap (insert mode)

:smap (select mode)

:xmap (visual , select mode)... more

Page 134: Vim Hacks

:map (all)

:nmap (normal mode)

:vmap (visual mode)

:imap (insert mode)

:smap (select mode)

:xmap (visual , select mode)... more

最常用

最常用

最常用

Page 135: Vim Hacks

:nmap <C-c><C-c> :!gcc -Wall % -o %:r.out<CR>

Ctrl C Ctrl C

呼叫 GCC 編譯現在編輯的檔案並將輸出檔名命名為現在檔案名稱並取代副檔名為 .out

Page 136: Vim Hacks

nmap <tab> v>nmap <s-tab> v<

vmap <tab> >gvvmap <s-tab> <gv

Normal Mode 時,可用 Tab 及 Shift-Tab 做縮排

Page 137: Vim Hacks

nmap <tab> v>nmap <s-tab> v<

vmap <tab> >gvvmap <s-tab> <gv

Visual/Select Mode 時,也可用 Tab 及 Shift-Tab 做縮排

Page 138: Vim Hacks

nmap <tab> v>nmap <s-tab> v<

vmap <tab> >gvvmap <s-tab> <gv

Visual/Select Mode 時,也可用 Tab 及 Shift-Tab 做縮排

When mappings and menus are defined with the |:vmap| or |:vmenu| command they work

both in Visual mode and in Select mode. When these are used in Select mode Vim automatically switches to Visual mode, so

that the same behavior as in Visual mode is effective.

Page 139: Vim Hacks

imap <F2> <C-R>=strftime("%c")<CR>

在 Insert Mode 時,按下 F2 會插入時間戳記

Page 140: Vim Hacks

cmap <c-a> <home>cmap <c-e> <end>cnoremap <c-b> <left>cnoremap <c-d> <del>cnoremap <c-f> <right>cnoremap <c-n> <down>cnoremap <c-p> <up>

cnoremap <esc><c-b> <s-left>cnoremap <esc><c-f> <s-right>

讓 Command Mode 也有 Bash 的 Key Binding

Page 141: Vim Hacks

:h map.txt

Page 142: Vim Hacks

5.文字物件TEXT OBJECT

Page 143: Vim Hacks

Text Object

• word

• string

• paragraph

• block

⇛ action(yank,delete,change ...etc)

Page 144: Vim Hacks

v | c | d i | a { | [ | ( | “ | ‘

visualchangedelete

Inner ObjectAn Object

Region{ }[ ]( )“ “‘ ‘

Operator Mapping

Operator

Page 145: Vim Hacks

va{

Page 146: Vim Hacks
Page 147: Vim Hacks

function ( blah , blah )ci(

function ( )

function ( new_args )

Page 148: Vim Hacks

“Hello World”di”

“”

“Hello New World”

Page 149: Vim Hacks

6.分頁支援TAB PAPGES

Page 150: Vim Hacks
Page 151: Vim Hacks

:tabnew

Page 152: Vim Hacks

:tabnew:tabedit path/to/file

Page 153: Vim Hacks

:tabnew:tabedit path/to/file:tabfind path/to/file

Page 154: Vim Hacks

:help tabpage.txt

Page 155: Vim Hacks

7.程式碼折疊FOLDS

Page 156: Vim Hacks

FOLD IS

Page 157: Vim Hacks
Page 158: Vim Hacks

Fold Methods

Page 159: Vim Hacks

Syntax Fold

Fold Methods

Page 160: Vim Hacks

Syntax Fold

Fold Methods

:set foldmethod=syntax

以程式語言語法做為折疊規則。某些特定的設定可以參考

$VIMRUNTIME/syntax/*.vim

Page 161: Vim Hacks

以 Perl 為例:/opt/local/share/vim/vim72/syntax/perl.vim

if exists("perl_want_scope_in_variables")“ .....if exists("perl_extended_vars")“ ..... if exists("perl_fold")“ ..... 便可在 .vimrc 內設定啟用這些特

定的語法標記或折疊 (Fold)

let perl_fold = 1let perl_extended_vars = 1“ .... etc

Page 162: Vim Hacks

Syntax FoldMarker Fold

Fold Methods

Page 163: Vim Hacks

Syntax FoldMarker Fold

Fold Methods

:set foldmethod=marker

以特定標記作為折疊規則,預設是 “{{{“ 以及 “}}}”

Page 164: Vim Hacks

# fold this {{{function do_something {

echo “COSCUP”;

}# }}}

Page 165: Vim Hacks

Syntax FoldMarker FoldIndent Fold

Fold Methods

Page 166: Vim Hacks

Syntax FoldMarker FoldIndent Fold

Fold Methods

:set foldmethod=indent

以縮排作為折疊規則

Page 167: Vim Hacks

Syntax FoldMarker FoldIndent FoldManual Fold

Fold Methods

Page 168: Vim Hacks

:set foldmethod=manual

手動建立折疊區塊,以 z f 鍵建立。

Page 169: Vim Hacks

利用 autocmd 加上 mkview , loadview 來儲存手動建立的折疊區塊,儲存的折疊會被放在 ~/.vim/view/ 裡頭。

autocmd BufWinLeave *.* silent mkviewautocmd BufWinEnter *.* silent loadview

Page 170: Vim Hacks

Syntax FoldMarker FoldIndent FoldManual FoldExpr Fold (Custom Fold Function)

Fold Methods

Page 171: Vim Hacks

:set foldexpr=MyFoldLevel(v:lnum)

呼叫自訂的折疊函式

Page 172: Vim Hacks

Syntax FoldMarker FoldIndent FoldManual FoldExpr Fold (Custom Fold Function)

Diff Fold

Fold Methods

Page 173: Vim Hacks

8.Modeline & FileType

Page 174: Vim Hacks

ModeLine

Page 175: Vim Hacks

" vim:fdm=marker:sw=2:ts=2:et:fdl=0:"============================" Author: Cornelius < cornelius.howl{at}gmail{dot}com >

Page 176: Vim Hacks

" vim:fdm=marker:sw=2:ts=2:et:fdl=0:"============================" Author: Cornelius < cornelius.howl{at}gmail{dot}com >

開啟此檔時,使用 Marker 作為折疊,縮排為兩個空隔,將 Tab 延展為空白,折疊所有的 Fold (Level 0 以上)

Page 177: Vim Hacks

FileType

Page 178: Vim Hacks

~/.vim/ftplugin/ruby.vim

針對某種檔案類型的設定不一定都要寫在 vimrc 內

Page 179: Vim Hacks

~/.vim/filetype.vim

可在 filetype.vim 內定義新的檔案類型。

Page 180: Vim Hacks

9.格式化FORMATTING

Page 181: Vim Hacks

程式碼很亂,怎麼辦?

Page 182: Vim Hacks

要手動自己排嗎?

Page 183: Vim Hacks

:set equalprg=perltidy

Page 184: Vim Hacks

:set equalprg=perltidy

選擇文字區塊後,按下 “=” 鍵,可使用外部的 perltidy 程式來做格式化處理。

可針對特定區塊重新排列程式碼

Page 185: Vim Hacks

autocmd Filetype perl :set equalprg=perltidy

可使用 autocmd 針對檔案類型做 equalprg 設定

Page 186: Vim Hacks

autocmd Filetype c :set equalprg=indent

開啟 C 程式碼時,使用外部的 GNU Ident 程式來做格式化處理。

Page 187: Vim Hacks

SQL$ cat bin/sql-beautify.pl #!/usr/bin/env perluse warnings;use strict;use SQL::Beautify;local $/;my $sql = SQL::Beautify->new( query => <STDIN> , spaces => 4 , break => "\n" );print $sql->beautify;

autocmd Filetype sql :set equalprg=sql-beautify.pl

開啟 SQL 程式碼時,使用外部的 Filter 來做格式化處理。

Page 188: Vim Hacks

10. QuickFix

Page 189: Vim Hacks

:grep & :make

Page 190: Vim Hacks

:grep [pattern] [filepath]

Page 191: Vim Hacks

:grep [pattern] [filepath]

呼叫 grepprg (預設 vimgrep) 執行,並將 grep 的結果彙整至 QuickFix

Page 192: Vim Hacks

QuickFix Window

Page 193: Vim Hacks

:set grepprg=/path/to/grep

設置 grepprg (預設 VIM 內建 grep)

Page 194: Vim Hacks

:make

Page 195: Vim Hacks

:make

呼叫 makeprg (預設 make) 執行 Makefile. 並以該語言的 compiler

output parser 彙整結果。

Page 196: Vim Hacks

:set makeprg=gmake

設置 makeprg (預設 make)

Page 197: Vim Hacks

Result ⇛ QuickFix Window

Page 198: Vim Hacks

:copen

開啟 QuickFix Window

Page 199: Vim Hacks

:cclose

關閉 QuickFix Window

Page 200: Vim Hacks

:cnext

下一筆 Result

Page 201: Vim Hacks

:cprevious

上一筆 Result

Page 202: Vim Hacks

com! -bang -nargs=? QFix cal QFixToggle(<bang>0)fu! QFixToggle(forced) if exists("g:qfix_win") && a:forced == 0 cclose unlet g:qfix_win else copen 10 let g:qfix_win = bufnr("$") enendf nn <leader>q :QFix<cr>

QuickFix Window Toggle

Page 203: Vim Hacks

com! -bang -nargs=? QFix cal QFixToggle(<bang>0)fu! QFixToggle(forced) if exists("g:qfix_win") && a:forced == 0 cclose unlet g:qfix_win else copen 10 let g:qfix_win = bufnr("$") enendf nn <leader>q :QFix<cr>

QuickFix Window Toggle

nmap 至 “\q” , <leader> 預設為 “\” 鍵

Page 204: Vim Hacks

11. 插件Plugin

Page 205: Vim Hacks

SnipMate提供類似 TextMate 編輯器的程式碼片段完成功能。

Page 206: Vim Hacks

snippet cla class .. initialize .. end class ${1:`substitute(Filename(), '^.', '\u&', '')`} def initialize(${2:args}) ${3} end

end 自訂常用程式碼樣板

Page 207: Vim Hacks

DBExt.vim資料庫輔助插件,支援 Oracle, Sybase, MSSQL ,

MySQL, DBI 等等

Page 208: Vim Hacks

xml.vim提供 XML 相關輔助功能,如自動補完標籤等等。

Page 209: Vim Hacks

FuzzyFinder.vimFuzzy/Partial pattern explorer

Page 210: Vim Hacks

The_NERD_TREE.vim樹狀目錄檔案瀏覽

Page 211: Vim Hacks

The NERD Commenter

註解輔助工具

Page 212: Vim Hacks

taglist.vim透過 ctags 工具產生程式碼標籤

並可將 macro , function , variable 等資料整理出來

Page 213: Vim Hacks

cscopeC 程式碼追蹤輔助

Page 214: Vim Hacks

autocomplpop.vim

Page 215: Vim Hacks

MRUmost recently used

Page 216: Vim Hacks

bufexplorer.vimBuffer Explorer

Page 217: Vim Hacks

Rails.vim

Page 218: Vim Hacks

git-vim

Page 219: Vim Hacks

那麼,怎麼安裝呢?

Page 220: Vim Hacks

最原始的作法

Page 221: Vim Hacks
Page 222: Vim Hacks
Page 223: Vim Hacks
Page 224: Vim Hacks
Page 225: Vim Hacks

下載套件

Page 226: Vim Hacks

閱讀安裝步驟

Page 227: Vim Hacks

閱讀安裝步驟

太繁瑣!

Page 228: Vim Hacks

閱讀安裝步驟

太繁瑣!

Page 229: Vim Hacks
Page 230: Vim Hacks

VimanaVim script Manager

Page 231: Vim Hacks

• Vimball

• Archive File ( zip , rar )

• .vim file

Page 232: Vim Hacks

POWERED BY

Perl

Page 233: Vim Hacks

$ cpan Vimana

使用 CPAN 安裝 Vimana

Page 234: Vim Hacks

$ vimana search xml

搜尋

Page 235: Vim Hacks

$ vimana search xmlrrd.vim - Edit RRD data with Vim.qt.vim - tiny tool for the uic used in Qt from Trolltechsyntax-for-xul - Highlighting for XML User interface Language.maven2.vim - Compiler plugin for maven2 .... skip

Page 236: Vim Hacks

$ vimana info xml.vim

查詢 script 資訊

Page 237: Vim Hacks

$ vimana install xml.vim 安裝 xml.vim 外掛

Page 238: Vim Hacks

$ vimana install xml.vim$ vimana install rails.vim$ vimana install the-nerd-tree.vim$ vimana install taglist.vim$ vimana install snipmate$ vimana install fuzzyfinder.vimetc ...

ALL Works

Page 239: Vim Hacks

http://github.com/c9s/Vimana/tree/master

Git Repository

Page 240: Vim Hacks

ENJOY

Page 241: Vim Hacks

Thank You

Page 242: Vim Hacks

Demo如果有時間....

Page 243: Vim Hacks

Q & A