最近在練習 WebStorm / Tennis 的速度(目前 10 分半)
想使用 “邪教觸控板” 超越 “傳說 vim”
不過 Vim 真的不是我的愛,加上 Mac 鍵盤搭配 Vim 真的很痛苦
尤其是那難用的 ESC 及 Touch Bar
後來決定使用觸控板搭配 Web Storm 特性
試圖將速度有效的提升
遇到的問題及解決辦法:
1. 滑鼠 / 觸控板會慢,是因為需要找游標以及需要瞄準
但純粹游標瞄準絕對不是問題
想想各位都可以在 CS 等射擊遊戲中
使用狙擊槍 0.5 秒甩槍爆頭
沒道理這個技能在開發中無法運用
問題在於預設情況,打字狀態下游標是會被隱藏的(Mac 是如此
遊戲中,游標是穩定在畫面的中央,所以反應才能那麼快
只要能夠穩定的了解目前游標位置
自然就能加速使用觸控板 / 滑鼠開發
(因此我在游標上加了O,永遠掌握它的位置)
2. 自動格式化、分號、存檔、測試等重複流程
在 極速開發 課程中介紹到 Vim 指令搭配 Web Storm
使用組合鍵的形式呼叫 Web Storm 的多個方法
可以有效使用少數幾個按鈕就執行多個行為
如果是沒有使用 Vim 則可以使用 Macro
類似錄製的方式,將特定的 Action 記錄起來
再透過熱鍵的方式觸發
格式化、存檔、測試一次搞定
3. 複製片段太慢
Vim 中,複製技巧是一個檻
用滑鼠 / 鍵盤開發也是如此啊!
選取、複製、貼上這個流程中都會耗去不少時間
加上貼上後還需要移動到指定位置
所需的鍵盤指令都需要不少
因此我再次使用 Web Storm 的 "Macro" 功能
直接複製整個區塊(只要移動至區塊的最前方,最後複製該區塊)
接下來在使用游標移動至要編輯的區塊即可
移動的過程中還可以使用滾輪調整畫面位置
過程中可大幅降低輸入錯誤指令問題
---
同事們也說到:你這個研究精神,Vim 早練起來了吧.
===
也感謝這門課,讓我重新體悟許多事情
- 效率不好是「工具不熟悉、方法不對、壞習慣不改」所造成的
- 重複的訓練可以有效加速對於工具、知識的掌握
- 觀看錄影知道自己還有哪邊可以優化,每次調整都可以提升數分鐘的效率
六角接下來也討論直播課程要導入相關的概念
我也是雙手贊成,這真的可以強化許多知識及工具掌握能力
#目標十分內
vim指令 在 91 敏捷開發之路 Facebook 的最佳貼文
突然發現學員的心得文,感到欣慰。
一月份的極速開發報名已經額滿,五月的報名連結在這:https://yihuode.io/activities/724
#vim #php #java #c# #極速開發
Hi 大家好,
之前在Backend版徵到人團報極速開發課程(php/java/c#), 回饋一下寫心得供後面有興趣的板友參考。
我很喜歡老師課堂上的一句話,”你不知道你不知道什麼”,例如你以為你打字很快了,但透過結合IDE跟快捷鍵又可以在上一層,以為精通IDE是極限了,vim+IDE又可以再突破極限。
[這門課不是教你vim指令,而是教你怎麼用vim來開發]
上課之前我認知這個課程會注重在vim操作, 而實際上不只是vim的本身,更進一步的利用如何與IDE做整合,並練習如何利用vim來取代重複的動作,同時教導怎麼針對個人的習慣去客製化vim的操作,更重要的是透過課後練習的review快速將所學轉化到工作上。
[藉由Kata練習將vim和IDE連結在實務上]
可能看了一些教學影片跟書,知道怎麼操作vim但無法流暢的應用在實際開發上。以我自己的親身經驗,練習一段時間且有試著在專案上使用,有感受到vim的便利度跟潛力,但是實際拿來開發上卻差了些什麼,總是有一道牆擋著的感覺,藉由這門課跟課後的練習打通了實際使用上的一些檻,有種武俠小說任督二脈被打通的感覺,終於稍微體會到高手如何應用vim行雲流水般coding
[課後練習與online coaching大量減少學習時間]
老師安排的課後練習跟online coaching,讓學習vim並應用到工作上的時間跟學習曲線可以大幅縮短,班上有同學認真練習在一周內從完全不會vim到可以應用到實際工作上,對公認陡峭的vim學習曲線來說真的很驚人。
[讓你從每個操作的細節中扎實的省下時間]
那成效如何呢? 以我自己練習來說,同一個練習的kata用vim + IDE跟只用IDE起來大概可以快1/4 ~1/2的時間,這是”純操作”上省下的時間,相當的顯著,實務上開發花最多時間的是思考跟debug,其實很難掌控,但是藉由優化每個動作省下一點一滴時間卻是扎扎實實的。ps:附上gif,來看一下一個簡單的移動加刪除操作可以在三種操作下可以差多少個按鍵。
[跨IDE的操作習慣]
我開始練習是使用C# + Visual studio, 現在會有用WebStorm來練習javascript/typescript,操作上幾乎沒有差異,幾乎不需要重新練習跟記憶IDE的熱鍵, 如果同樣是JetBrains系列的IDE那大概可以完全維持一樣的操作習慣,相當推薦給有再用JetBrains IDE 多語言開發的朋友,當然VScodeVim也可以受益,只怕vim整合IDE的部分太過吸引人乾脆跳槽去JetBrains
ps: 單元測試還沒上過或是預算有限的板友可以先參考單元測試班(php/Java/C#),下一梯極速開發不知道會間隔多久了,有單元測試經驗在上極速開發課程會有加乘效果,加上這年頭寫測試已經是幾乎是必備技能了,我個人優先的會把單元測試班排在最前面。
極速開發課程支援php/java/c#,不過同梯也有寫c++的同學,寫ES6跟Typescript的版友也可以參考,操作上差異不大,一點課後心得供大家參考。
課程參考連結: https://dotblogs.com.tw/hatelove
vim指令 在 我的Vim.md 的推薦與評價
我的Vim 指令筆記. ##vim 的三種模式###模式. 輸入模式 :輸入內文。 指揮模式 :也叫指令模式,主要是進入到可以對文件做修改,複製,剪下貼上,游標移動等動作。 ... <看更多>
vim指令 在 Vim 的常用指令 的推薦與評價
... 而隨著時間的過去,Vi 的功能不斷地被增強,最後演化出目前受歡迎的Vim , 關於Vim 的詳細手冊可查詢官方文件,這裡僅列出常用的一些指令。 ... <看更多>
vim指令 在 [vim ] 學習vim的心法與攻略- 看板Editor - 批踢踢實業坊 的推薦與評價
EDIT: 這裡有個不錯的連結可以當做初學參考
https://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
這篇文章是給剛開始接觸vim的版友參考的
因為vim指令繁多,剛接觸時會很難接受它的邏輯
好像要將許多字母的對應全部都記起來,才會發揮vim的威力(雖然這麼說也沒錯:p)
也看到很多新人會上網列印vim cheat sheat
可是記不清楚各式指令,最後還是把vim當作記事本使用...
因此呢,想分享一些能幫助學習vim的心法,還有幫助記憶指令的撇步
如果版友有更多錦囊密技,也請掏寶分享,讓Editor版活絡起來吧!
vim or vi like editor最大的特色,就是有多種模式 (mode)
這也是vi/vim被認為難學的理由之一
關於mode的設計,vgod大在blog上面有一篇深入討論的文章:
https://blog.vgod.tw/2009/12/07/text-editing/
後來文字編輯器變得越來越複雜,快速鍵也大量增加,這時在有限的空間內
分配快速鍵的位置並且讓使用者容易學習又不容易忘記就成了一件困難的事
。現代的一般編輯器,包括很多寫程式用的IDE,大量使用各種混合Ctrl、
Shift、Alt的快速鍵,這種快速鍵設計哲學是把每一個功能對應到一組複合
鍵上。理所當然的,功能越多,快速鍵就越多越難記。
...
vi的這種設計避免了快速鍵的組合爆炸(想想看如果把各種組合都對應到一
個ctrl-alt快速鍵會有多少個..),並且讓使用者能完全使用鍵盤來精確、
快速的編輯一個文件,一旦熟悉這種操作後,手都不用離開鍵盤,不管是寫
程式或是寫文章都有了一種人機合一的流暢感,心中想到哪裡游標就能精確
移動到哪裡,不管多複雜的文字操作都能快速解決,心中的爽快感其實是難
以用筆墨形容的。
vim本身有11種模式,限於篇幅就先鎖定在normal and insert mode吧
一般進到vim時,會是在normal mode底下
大部分的複製、剪貼、滾動、移動游標、跳躍到書籤、錄製巨集
等"動作"都是在這個mode下完成的
要進入文字編輯模式,得按i
切回normal mode可以用esc或是^-[(ctrl-[的意思)
在normal mode底下,我暫時先將最常用的指令分成三類
action: insert, yank, delete, paste... (慣例中我們將複製稱作yank而非copy)
number: repeat action/motion
motion: cursor motion
其中最有特色的就是repeat number的部份
幾乎所有的指令都可以用number來重複(除了insert mode中的指令)
從數字著手我覺得會更容易感受到vim 的"文法"
比如說:
5b 向左移動5個單字 (移動單位和移動指令是合併的)
5^f 滾動5頁
6yy 複製6段 (變成複合句了)
d% 剪下這個括號內的所有內容
以上的動作都只需要花兩三個字元就可以做到
由於vi/vim有相當多的指令可以做各種動作
像是在單字間移動、段落、單字內、括號批配、頁首/尾、檔首/尾、行首/尾
等等
熟悉的動作指令越多,越能做出滑鼠無法做到的快速移動
同時可以跟action指令結合(action, motion在中文都通稱動作,真難翻...)
讓編修文字變得更有效率!
了解vim的文法,就可以來記憶一下幾個常用的motion
k w (a word) b (back a word) e (end of a word)
h l ^ (head of indent line) 0 (head of line)
j $ (end of line)
hjkl是上下左右,如果要追求高速的文字輸入效率
使用home row的效果會比使用上下左右高 (不知道home row是什麼請自己去查)
因此現在你可以操作看看vim指令了!
5k 向上五行
5w 向右五個字(游標在字首)
5e 向右五個字(游標在字尾)
$ 直接跳到行尾,重複次數無意義XD
剩下的請自己排列組合XD
然後來看幾個最常用的action指令:
d{motion} delete 刪除(所有的刪除都是剪下,會進入剪貼簿)
y{motion} yank 複製
c{motion} change 刪除並進入insert mode(可翻作刪修)
p paste 貼上
注:{motion}可以是複合的動作指令,如5w
注:paste因為和其他幾個指令性質有點不太相同,所以用不同的標色
我認為最核心的指令就是d,y,c,其他類似他們的指令都只是變形而已
現在可以將d,y,c跟其他的指令做組合:
d5w 刪五個字(到字首)
c^ 刪修到行首
不過如果每個動作都要跟其他動作指令做結合,就太慢了
所以就出現了幾種變形:
D 刪到行尾
C 刪修到行尾
dd 刪除整行
cc 刪修整行
yy 複製整行
Y 這也是複製整行...其實我比較希望是複製到行尾 ~"~
(順便問下版友,action到行首有沒有d^外更方便的按法啊?)
在這些motion前面可以加number,如:
5yy 複製五行
5cc 刪除五行再進入insert mode
另外有時候會需要以字元為單位的編輯,所以還有幾個小變形:
s substitude 刪修一個字元
x x 刪除一個字元
r replace 刪修一個字元再回到normal mode
R replace mode 取代模式
跟行單位的指令類似,在前面也可以加number:
5s 刪掉五個字元再進入insert mode
5x 刪五個字元
5r 將五個字元都換成新輸入的一個字元
R 每個輸入字元都會取代現在游標所在位置的字元
2R 取代的字會重複一次
看到這邊會不會有點頭昏眼花了呢XD
整理一下所有的指令:
k w (a word) b (back a word) e (end of a word)
h l ^ (head of indent line) 0 (head of line)
j $ (end of line)
刪除 複製 刪修 取代
d y c r
D Y C R (mode)
dd yy cc 貼上
x s p
切換mode
i (normal to insert)
R (normal to replace)
esc or ^-[ (back to normal)
其實沒有很多吧XD
這篇文章篇幅看起來很長,是為了要讓新進讀者能理解vim的文法
之後應該不會用這麼囉唆的語句來舉例了吧@ @|||
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.185.152
... <看更多>