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

VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VIM HacksWhy Vim

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

AIINK.com

Page 2: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

編輯器

Page 3: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

It doesn’t matter

Page 4: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

It does matter

Page 5: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 6: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

敏捷開發

Page 7: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

敏捷

Page 8: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

太多選擇

Page 9: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

想當年...

Page 10: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

年輕不懂事

Page 11: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

第一次

Page 12: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

MicrosoftVisual Studio

Page 13: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Eclipse

Page 14: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Code Block

Page 15: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Notepad++

Page 16: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

太多

Page 17: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

鬱卒了....

Page 18: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

於是....

Page 19: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

• 繼續嘗試其他編輯器

Page 20: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 21: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

• 又再寫一個 XXX Editor ..

Page 22: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

• 又再寫一個 XXX Editor ..

• 又或者....

Page 23: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

筆記本

Page 24: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

自從不用 Microsoft Windows 之後 ...

Page 25: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

GEdit

Page 26: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Emacs

Page 27: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

TextMate

Page 28: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VIM

Page 29: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 30: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

最糟糕的編輯方式

Page 31: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 32: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Oops!

少了 “a”

Page 33: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 34: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 35: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 36: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 37: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 38: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 39: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 40: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 41: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 42: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 43: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 44: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 45: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

x N

Page 46: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 47: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 48: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 49: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

一百個類似的狀況 ?

Page 50: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

浪費時間移動游標

Page 51: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

The VIM way...

Page 52: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

VIM:

F h

Page 53: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

VIM:

a append

Page 54: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VIM

Page 55: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VIM 不是

Page 56: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

IDE

Page 57: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

不是...

Page 58: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 59: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

也不是...

Page 60: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

強而有力!!!

Page 61: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

強而有力!!!

喔喔喔喔!!!

Page 62: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VIM 是

Page 63: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VI Improved

Page 64: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

進階編輯器

Page 65: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

提高

Page 66: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

文字編輯效率

Page 67: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Learning Curve

Page 68: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

Page 69: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

Page 70: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

Page 71: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

• gVim Easy

Page 72: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

Page 73: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

Page 74: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

• Vi in Bash

Page 75: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

各種 Vim

• Vim

• gVim

• gVim Easy

• MacVim

• Vi in Emacs

• Vi in Bash

• etc ...

Page 76: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Features

Page 77: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

1.編輯模式Mode

Page 78: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

四種以上編輯模式

Page 79: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

INSERTNORMALVISUALSELECT

... et cetera

Page 80: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

[Ii]NSERTNORMAL[Vv]ISUAL

ESC

Page 81: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

1.1 Normal Mode

Page 82: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Motion

Page 83: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 84: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

丟掉方向鍵吧

Page 85: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

節省移動時間

Page 86: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

請愛用

Page 87: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

HJKL←↓↑→

Page 88: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

Page 89: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

Cursor

Page 90: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

[{

Page 91: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

f@

Page 92: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

$

Page 93: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

^

Page 94: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

H 畫面最上方

Page 95: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

M畫面中間行

Page 96: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}L 畫面最下方

Page 97: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

修改至行尾

Page 98: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

my @outs = grep }

sub func1 {

}

C並進入 Insert mode

Page 99: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

Page 100: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# comments ...

foreach my $foo ( @bar ) {

# 做點事情

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

sub func1 {

}

%

Page 101: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:h motion.txt

Page 102: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

1.2 Insert Mode

Page 103: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Editing text

Page 104: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Insert Mode

• i : Insert text before the cursor

Page 105: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

• i : Insert text before the cursor

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

Insert Mode

Page 106: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

• 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

• 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

1.3 Visual Mode

Page 109: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Select region

Page 110: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Visual Mode

• v : start Visual mode per character.

Page 111: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Visual Mode

• v : start Visual mode per character.

• V : start Visual mode linewise.

Page 112: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Visual Mode

• v : start Visual mode per character.

• V : start Visual mode linewise.

• Ctrl-v : start Visual mode blockwise.

Page 113: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

2.語法標記Syntax Highlight Support

Page 115: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

包含五百多種語法設定檔

Page 116: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

可自訂 Syntax

Page 117: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 118: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

syn match [id] [re] [options]

Page 119: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 120: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 121: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

~/.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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:help syntax.txt

Page 123: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

3.編碼支援ENCODING

Page 124: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 125: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

設定檔案編碼清單

Page 126: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

: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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

檔案編碼

Page 128: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

內部編碼

Page 129: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

: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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:help encoding

Page 131: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

4. 快捷鍵Key Mapping

Page 132: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 133: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:map (all)

:nmap (normal mode)

:vmap (visual mode)

:imap (insert mode)

:smap (select mode)

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

Page 134: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:map (all)

:nmap (normal mode)

:vmap (visual mode)

:imap (insert mode)

:smap (select mode)

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

最常用

最常用

最常用

Page 135: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Ctrl C Ctrl C

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

Page 136: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

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

Page 137: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

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

Page 138: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 140: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:h map.txt

Page 142: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

5.文字物件TEXT OBJECT

Page 143: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Text Object

• word

• string

• paragraph

• block

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

Page 144: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

visualchangedelete

Inner ObjectAn Object

Region{ }[ ]( )“ “‘ ‘

Operator Mapping

Operator

Page 145: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

va{

Page 146: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 147: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

function ( blah , blah )ci(

function ( )

function ( new_args )

Page 148: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

“Hello World”di”

“”

“Hello New World”

Page 149: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

6.分頁支援TAB PAPGES

Page 150: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 151: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:tabnew

Page 152: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:tabnew:tabedit path/to/file

Page 153: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 154: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:help tabpage.txt

Page 155: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

7.程式碼折疊FOLDS

Page 156: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

FOLD IS

Page 157: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 158: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Fold Methods

Page 159: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax Fold

Fold Methods

Page 160: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax Fold

Fold Methods

:set foldmethod=syntax

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

$VIMRUNTIME/syntax/*.vim

Page 161: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

以 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker Fold

Fold Methods

Page 163: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker Fold

Fold Methods

:set foldmethod=marker

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

Page 164: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

# fold this {{{function do_something {

echo “COSCUP”;

}# }}}

Page 165: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker FoldIndent Fold

Fold Methods

Page 166: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker FoldIndent Fold

Fold Methods

:set foldmethod=indent

以縮排作為折疊規則

Page 167: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker FoldIndent FoldManual Fold

Fold Methods

Page 168: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set foldmethod=manual

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

Page 169: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 170: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker FoldIndent FoldManual FoldExpr Fold (Custom Fold Function)

Fold Methods

Page 171: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set foldexpr=MyFoldLevel(v:lnum)

呼叫自訂的折疊函式

Page 172: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Syntax FoldMarker FoldIndent FoldManual FoldExpr Fold (Custom Fold Function)

Diff Fold

Fold Methods

Page 173: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

8.Modeline & FileType

Page 174: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

ModeLine

Page 175: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 176: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

" 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

FileType

Page 178: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

~/.vim/ftplugin/ruby.vim

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

Page 179: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

~/.vim/filetype.vim

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

Page 180: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

9.格式化FORMATTING

Page 181: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

程式碼很亂,怎麼辦?

Page 182: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

要手動自己排嗎?

Page 183: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set equalprg=perltidy

Page 184: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set equalprg=perltidy

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

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

Page 185: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

autocmd Filetype perl :set equalprg=perltidy

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

Page 186: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

autocmd Filetype c :set equalprg=indent

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

Page 187: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

10. QuickFix

Page 189: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:grep & :make

Page 190: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:grep [pattern] [filepath]

Page 191: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:grep [pattern] [filepath]

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

Page 192: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

QuickFix Window

Page 193: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set grepprg=/path/to/grep

設置 grepprg (預設 VIM 內建 grep)

Page 194: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:make

Page 195: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:make

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

output parser 彙整結果。

Page 196: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:set makeprg=gmake

設置 makeprg (預設 make)

Page 197: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Result ⇛ QuickFix Window

Page 198: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:copen

開啟 QuickFix Window

Page 199: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:cclose

關閉 QuickFix Window

Page 200: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:cnext

下一筆 Result

Page 201: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

:cprevious

上一筆 Result

Page 202: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

11. 插件Plugin

Page 205: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 206: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

end 自訂常用程式碼樣板

Page 207: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

MySQL, DBI 等等

Page 208: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 209: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

FuzzyFinder.vimFuzzy/Partial pattern explorer

Page 210: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

The_NERD_TREE.vim樹狀目錄檔案瀏覽

Page 211: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

The NERD Commenter

註解輔助工具

Page 212: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

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

Page 213: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

cscopeC 程式碼追蹤輔助

Page 214: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

autocomplpop.vim

Page 215: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

MRUmost recently used

Page 216: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

bufexplorer.vimBuffer Explorer

Page 217: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Rails.vim

Page 218: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

git-vim

Page 219: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

那麼,怎麼安裝呢?

Page 220: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

最原始的作法

Page 221: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 222: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 223: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 224: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 225: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

下載套件

Page 226: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

閱讀安裝步驟

Page 227: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

閱讀安裝步驟

太繁瑣!

Page 228: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

閱讀安裝步驟

太繁瑣!

Page 229: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com
Page 230: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

VimanaVim script Manager

Page 231: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

• Vimball

• Archive File ( zip , rar )

• .vim file

Page 232: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

POWERED BY

Perl

Page 233: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

$ cpan Vimana

使用 CPAN 安裝 Vimana

Page 234: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

$ vimana search xml

搜尋

Page 235: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

$ 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

$ vimana info xml.vim

查詢 script 資訊

Page 237: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Page 238: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

$ 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 - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

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

Git Repository

Page 240: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

ENJOY

Page 241: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Thank You

Page 242: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Demo如果有時間....

Page 243: VIM Hacks - WordPress.com · 2012. 9. 16. · VIM Hacks Why Vim Vim 能幫助我們什麼 c9s / Cornelius 林佑安 AIINK.com

Q & A