Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Create an editor belong to yourself.

Avatar for lucaswei lucaswei
April 24, 2012

Create an editor belong to yourself.

Avatar for lucaswei

lucaswei

April 24, 2012
Tweet

Other Decks in Programming

Transcript

  1. 後宮佳麗三千 • 那我該選哪個好? – 「我寫C,用Visual C++管理專案大好!」 – 「可是我有時候只是交個作業,還是DevC++ 好用。」 –

    「你還在用那種古董編輯器喔?我現在都用 Code::Block。」 – 「那我專題寫網頁,人工智慧要寫Android、計 算理論寫Python、compiler寫lex&yacc(而且還 找不到有lex的syntax的IDE)…」
  2. 為什麼該用VIM? • 純粹的Linux哲學-要什麼自己選擇 • 所有事情鍵盤可以搞定 • 游標移動快速 • 跟shell有高度的整合 –

    可以呼叫系統程式 • 安裝plug-in方便 – 網路上很多高手幫我們完成了很多事情 • 可以把自己常做的事情定義好,一鍵完成 – 可以用一個按鍵就顯示「老魏好帥」 • 上千種配色,可以挑個自己喜歡的 • Terminal介面就可以開啟,方便遠端編輯 – SSH到遠端的時候不用把資料下載回來改
  3. 為什麼要有這些模式? • 透過一些約定俗成的快速鍵(Ctrl-C, Ctrl-V..)就可以在編輯文章 中快速呼叫這些功能。這種編輯器的特色是學習門檻很低,要 記憶的只有一些特殊的快速鍵,即使不記得也能透過menu bar 找到。這樣子的UI具有容易學習(高learnability)、不容易忘記 (高memorability)、不容易產生Errors、一般用起來也不會有太 大不滿(satisfaction)。一切看起來都很美好,唯一的問題是,

    這種編輯器的efficiency到底是好還是不好?…vi的這種設計避 免了快速鍵的組合爆炸(想想看如果把各種組合都對應到一個 ctrl-alt快速鍵會有多少個..),並且讓使用者能完全使用鍵盤來 精確、快速的編輯一個文件,一旦熟悉這種操作後,手都不用 離開鍵盤,不管是寫程式或是寫文章都有了一種人機合一的流 暢感,心中想到哪裡游標就能精確移動到哪裡,不管多複雜的 文字操作都能快速解決,心中的爽快感其實是難以用筆墨形容 的。 • From vgod’s blog
  4. 操作 • d - delete • c - change •

    y - yank(複製) • p - paste • s – substitute • r - replace • u – undo • <ctr>+r - redo • dd – 整行剪下(可當刪 除用) • yy – 整行複製 • cc – 整行刪除,並且 進入insert mode • >> - 向右縮排 • << - 向左縮排
  5. 分頁 • Vim –p a b c 開啟的時候就有a、b、c分頁 • 編輯的過程中可以開啟分頁

    • <ctr>+Page Down • <ctr>+Page Up 可以在不同tabe之間切換 :tabe tab.c
  6. 常用的設定 • :set autoindent – 自動縮排 • :set background=dark –

    設定使用”深色主題“的高亮度 • :syntax on – 設定詞彙高亮度 • :set number – 開啟行號 • :set highlightsearch – 搜尋單字時背景高亮度 • :set cursorline – 底線
  7. Folding • set foldmethod=syntax • set foldlevel=10 • zc 折疊起來

    • zo 打開 – +-- 23 行: int init(char* file, char* max----------
  8. 為了防止對應到重覆的熱鍵... 加入nore! • vnoremap – 僅在反白模式時作用(Visual mode) • nnoremap –

    僅在常態模式時作用(Normal mode) • inoremap – 僅在插入模式時作用(Insert mode)
  9. 範例 " Hot key mapping { "Toggle nerd tree :noremap

    <F2> :NERDTreeToggle<ENTER> "Toggle Taglist :noremap <F3> :TlistToggle<ENTER> "quickly shift that line UP or DOWN :noremap <C-j> :m+<ENTER> :noremap <C-k> :m-2<ENTER> "Don't show pyc files let NERDTreeIgnore=['\.pys$'] "} “ 開頭是註解的意思
  10. 搜尋 • 進入Normal mode,打”/”後面就可以接 regular expresion來尋找相符合的字詞 • n下一個 • N上一個

    • #、*尋找目前游標所在的字 – This is an apple – 就可以找”apple”
  11. 取代 • 方式 :[範圍] s / [被取代] / [取代者] /

    [參數] • 範圍: – 1,100 我想要在1到100行做操作 – 1,$ 我想要從1到最後一行 – .,$ 我想從現在到最後一行 – % 所有範圍 = 1,$
  12. 取代 • 參數: – g 全部都要取代 – c 確認視窗 –

    i 忽略大小寫 • 範例 – :40,78s/orange/banana/gi
  13. 補習班又來教技巧了 • 限制選取: \< 前面不要 \>後面不要 word /the /\<the /the\>

    /\<the\> wether ◦ athe ◦ ◦ the ◦ ◦ ◦ ◦ then ◦ ◦
  14. 補習班又來教技巧了 • 撰寫html內容,可是每行後面都要<br/> [36] Please send pdf or word file.

    [37] Send your HW with mail title: [38] Theory of Computation [36] Please send pdf or word file.<br/> [37] Send your HW with mail title:<br/> [38] Theory of Computation<br/> command: :36,38s/$/<br/>/g
  15. Plug-in • Pathogen • AutoClose—Alves • NeoComplCache • The Nerd

    Tree • SnipMate ---(神器!必用) • EasyMotion • Taglist
  16. 安裝方法 • 選好自己喜歡的plug-in以後 drwxr-xr-x+ 1 Lucas None 0 三月 22

    11:14 autoload drwxr-xr-x+ 1 Lucas None 0 三月 22 11:14 doc drwxr-xr-x+ 1 Lucas None 0 三月 22 11:14 ftplugin drwxr-xr-x+ 1 Lucas None 0 三月 22 11:14 indent drwxr-xr-x+ 1 Lucas None 0 三月 22 11:14 plugin drwxr-xr-x+ 1 Lucas None 0 三月 22 11:14 syntax • 放入~/.vim/的資料夾下(沒有就自己建) • 在看有沒有初始設定需要寫入.vimrc即可