SlideShare a Scribd company logo
1 of 27
Download to read offline
哎哎呀呀
【濁⽔溪以南限定版】
慢速上⼿ Vim Plugin ⼼得 😥
今⽇分享
➤ Story
➤ 引⽤我在 Taipei.py 講的投影⽚
➤ 上⼿ VimScript
➤ 引⽤諸多(⼤神的)資料 Orz
➤ Why 哎哎呀呀
➤ 證明⼀下真的很哎哎呀呀
➤ Vim-CodeQuery
➤ Trace ⼀段 Code
➤ ⼼得
STORY
上⼿ VIMSCRIPT
HOW TO 上⼿ VIMSCRIPT
➤ 慢速
➤ Learn VimScript The Hard Way (有中⽂版)
➤ 時間:⼀⽉
➤ 中速
➤ 讀 Damian Conway ⼤神幫 IBM Developer 寫的⽂章
➤ 時間:⼀天
➤ 快速
➤ 直接讀 rstacruz ⼤神整理的 ⼩抄
➤ 看 c9s ⼤神到 OpenFoundry 的演講 錄影 + 投影⽚
➤ 時間:兩三個⼩時
“恭喜已上⼿ VimScript!
(了嗎︖)
HOW TO 上⼿ VIMSCRIPT
➤ 如果對於 VimScript 超有興趣又有時間
➤ 建議可以考慮慢速上⼿
➤ 其他
➤ 建議可以先快速上⼿後,再先從⾃⼰感興趣的地⽅開始實際寫起,
邊寫邊讀 :help 或 google
➤ 表⾯上快速上⼿很快,但還是得實際打打看、改改看、踩踩雷,才會深刻
➤ 如果⾃⼰本身已經累積很多 .vimrc 的內容,學習的過程應該蠻有樂趣的
➤ 「哦!原來這⼀⾏是 …」、「原來問題在 …」
➤ 在有⼀定熟悉程度前,要保持⼀定的學習頻率,不然忘超快
WHY 哎哎呀呀
“有飯粒有真相!
:if 1 | echo "true" | endif
代換 1 ⼤挑戰:
0
‘123’
‘abc’
‘abc123’
‘123abc’
:echo ‘a’ == ‘A’
猜猜是 0 還是 1
➤ 結果會被 set ignorecase 影響
➤ 所以提供 ==# 與 ==? 的⽅式來比較
autocmd BufRead,BufNewFile *.py echo 'yoyo'
:source ~/.vimrc
:source ~/.vimrc
➤ 要解決重複綁定的問題
➤ 可以⽤ autocmd! 可以清除之前綁定的 autocmd
➤ 建議都⽤ autogroup 包起來
➤ 然後記得加上 autocmd! 在第⼀⾏
伸縮⾃如的驚嘆
號⽤法⼤挑戰
autocmd 與 autocmd!
function YourFunction(arg1) 與 function! YourFunction(arg1)
command Save call script#foo()
與
command! Save call script#foo()
normal G 與 normal! G
set ignorecase 與 set ignorecase!
echo 0 與 echo !0
ls 與 !ls
:w 與 :w!
Global function ⼤寫
Function 內的參數要⽤ a: 開頭來存取
運作時如果出錯,會「繼續執⾏」
(建議裝個 linter)
Vim ⽀援四種 Regex Mode
但是都是 Vim 獨有的 … Orz
:help magic
“族繁不及備載
- 哎哎呀呀
VIM-CODEQUERY

More Related Content

More from Chun-Yu Tseng

More from Chun-Yu Tseng (14)

從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
 
Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]
 
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
 
程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014
 
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
 
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27
 
用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松
 
Testing in Python @ Kaosiung.py 2014.05.26
Testing in Python @ Kaosiung.py 2014.05.26Testing in Python @ Kaosiung.py 2014.05.26
Testing in Python @ Kaosiung.py 2014.05.26
 
Tip for Editors
Tip for EditorsTip for Editors
Tip for Editors
 
PyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF IntroductionPyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF Introduction
 
PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹
 
暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30 暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30
 
API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013
 
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
 

哎哎呀呀慢速上手 Vim Plugin 心得 @ 2016.08.27