大山姆的機機車車™ #18

▋VIM 出成功的第一步

我大概是在 2012 年左右成功跨過 VIM 的入門門檻,正式成為一名 VIMer。在此之前,大概失敗了五次,每次都撐不了幾天就說服自己回到熟悉的文字編輯器。

「VIM」不單指那個「文字編輯器」,對我來說,VIM 是一種「操作文字的技藝」,有時候也是「操作游標的技藝」。相較於一般文字編輯手法,VIM 的學習曲線公認陡峭。不過,反思我的學習經驗,我認為調整好心態,用對方法,熬過最初兩個禮拜,成為 VIMer 的機率很高。

學習 VIM 的心態

以正確的心態接觸 VIM,成功的機會高。非 VIMer 最常問的問題是:

VIM 真的值得我忍受學習新工具的痛苦,花時間、精神與腦力學習嗎?

答案絕對是肯定的。我人微言輕,說的話沒什麼說服力,網路上隨便就找得到一堆盛讚 VIM 的高手不斷傳達「不要遲疑,趕快 VIM 起來」的訊息。國外一間軟體公司 Thoughtbot,幾乎把 VIM 列為必備技能。

另外,我認為要學好 VIM ,不會盲打,難度很高。「盲打」就是打字不用低著頭,盯著鍵盤看。如果你還不會盲打,請花時間苦練

雖然 VIM 可以做很多你以前想都沒想過的事,不過,跟學習其他技能一樣,我建議一開始不要想太多,從最簡單的操作開始練,累積小勝,熬過痛苦期,進入「正向循環」。

一開始不要想著挑戰高難度的技巧,如同我先前在推特分享的,比較保守的學習方法是:

有志往專業程式設計師發展的朋友,我建議給自己一個「++專業技能」的機會:花至少一個月的時間用心學習 VIM。頭一個月不求多,開檔、存檔、離開,基本的游標操作(上下左右,跳行數),搜尋,選取、複製、貼上。我相信學會以上技法後,你就...上鉤了。

另外,不要被其他 VIMer 的高能技巧閃到而自暴自棄,每個人的學習階段不同,領域不同,解決問題的手法也不同。保持開放的心胸,看到好用的技巧就學起來,多練習,你會越來越強。發現好用的技巧,興奮之餘別忘了分享。分享使人成長,也讓社群茁壯。

你的第一個目標應該設定在使用 VIM 編輯文字的效率,達到或接近你原本熟悉的編輯器。接著,當你慢慢學會更多 VIM 專用技巧,就能把文字玩弄於股掌之間,工作效率也會大幅提昇,自此欲罷不能。

前陣子,我試著在推特上以簡短的動態 GIF 圖,搭配文字說明,展示一些我覺得好用的 VIM 技巧。未來我打算分享更多好用的 VIM 技,希望引起更多人的興趣。

VIM 有很多高級技巧,但其實不需要那些高級技巧,也能讓你做起事變得很「高級」。所以,不要再猶豫了,今年就是你的 VIM 元年!

本期以 VIM 為主題,我分享了網路上許多不錯的 VIM 教學。

我是山姆,《大山姆的機機車車™》是我投注心力製作的電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。


參兩摘

The State of C++ on Windows | Kenny Kerr

「鬍子K」把 C++/WinRT 帶到微軟,利用軟體巨人的資源發展 C++/WinRT。雖然已經正式納入Windows SDK for Windows 10 1803,但與 Visual Studio 的整合仍有很大的改善空間。

It pains me that Windows does not have a good UI story for C++ developers.

Microsoft 在 MFC 之後,幾乎停止了 C++ GUI Framework 的開發(ATL/WTL 不算)。目前微軟在 C++ GUI Programming 領域真的很弱。近年微軟對 UWP 寄予厚望,但我不希望微軟為了強推「UWP Only」而捨 Desktop,我收到許多客戶需求是 UWP 無法滿足的。

UTF-8 Everywhere Manifesto

這份文件(宣言)解釋為什麼 UTF-8 在幾乎任何場合都是文字編碼格式首選。建議老中新手花一點時間搞懂 ASCII, UTF-8, UTF-16, UTF-32 之間的差異與優缺點。

Stick to UTF-8 and these three character sets

Loguru 的作者解釋為什麼 UTF-8 是首選文字編碼格式。Loguru 是個輕量型的 C++ Logging Library,我在一些小型專案中用她代替 glog,目前為止表現令人滿意。

VIM 學習資源

Vim Cheat Sheet

可快速查詢各個按鍵、快速鍵,以及常用的 VIM 指令。

爽爽快快學Vim(1) | 高見龍

五倍紅寶石的創辦人錄的 VIM 教學,中文的學習資源總是特別親切好吸收,不要錯過。

Interactive Vim tutorial

互動式的線上 VIM 學習環境,是不錯的入門學習資源。不過,我鼓勵讀者下定決心,把 VIM 裝起來,就在自己的電腦上,每天玩一玩。不過是個文字編輯器嘛,沒什麼好怕的。

VimGenius

同樣是 VIM 線上學習資源。這是我最近才發現的,還沒有認真玩過。

Vim Awesome

許多 VIM 的外掛,我不建議新手一開始就安裝許多外掛,VIM 內建的功能就很夠用了。待翻過門檻,正式成為 VIMer 後,再挑選適合的「強化」武器也不遲。

給程式設計師的Vim入門圖解說明 | vgod's blog

圈內知名的技術人,做了一張 VIM 入門圖解,是不錯的入門資源。類似前面的 Cheat Sheet,中文版好吸收,而且以編輯程式碼為使用場景,說明如何用 VIM 達到目的。

使用 Vim 編輯器的第五年

一個一開始被迫學習 VIM,成為 VIMer 後就不曾回頭。文中也有提到 Plug-in,以及寫 Plug-in 的經驗。很不錯的經驗分享。

摘影片

CppCon 2018: Robert Schumacher “Don't package your libraries, write packagable libraries!”

開發套件不只要考慮開發者和使用者,還要考慮到依賴的套件開發者和維護者,原則一樣是全面向更一般化。 (不過實務上真的不容易,還是非常多情況需要用 Windows.h 啊) 演講做後最後講者順邊廣告一下 vcpkg 這個跨平台 C++ 套件管理員 XD

By Sidney Niu

CppCon 2018: Anastasiia Kazakova “Debug C++ Without Running”

因為 C++ 是一個蠻複雜的語言,好在有Meta的概念 ( Constexpr, Injection ),使用者應該儘可能地把工作搬到編譯時期除錯。 雖然演講中用 Macro 去達到除錯的技術,正式原始碼 Macro 還是越少越好,畢竟不易追蹤。

By Sidney Niu

吸引人的標題,不過,我建議不要給自己那麼大的壓力。堅持兩個禮拜不放棄,你就差不多成功了。

VIM 內建的功能已經很夠日常生活使用,過於追求好用的 Plug-in 容易迷失方向。外掛不一定帶你上天堂,各個領域都一樣。

一個 VIMer 想不開去學 Emacs 後分享心得。新人不要看,徒增煩惱。

開源專案

Microsoft/microsoft-ui-xaml: Windows UI Library

儘管 UWP 有許多美好的功能,但限制實在太多,我不樂見微軟強推 UWP 放棄傳統的 Win32 Desktop app。話雖如此,微軟近年在開源社群的表現令人刮目相看,許多大型專案「見光」。

這個專案以 C++/WinRT 寫就,其角色類似 MFC,是微軟擁抱 .NET 後少見的 C++ GUI 函式庫。WinUI Library 可與 Xamarin.Forms 整合。

Microsoft/xlang: Help developers create APIs that can run on multiple platforms and be used with a variety of languages

Help developers create APIs that can run on multiple platforms and be used with a variety of languages - Microsoft/xlang

課程推薦

開始 C++ 程式設計 – 從新手到超越

本課程假設你沒有任何 C ++ 經驗(甚至沒寫過程式),最終你將掌握用 C ++ 開發自己程式的技能。

學習進階的 C++ 程式設計

本課程將帶你從 C ++ 的基本知識到使用該語言的先進功能。 如果你想深化你對 C ++ 的基本知識。

中文課程 – C++ QT 跨平台界面編程原理和實戰大全(QT5)

學完本課程能夠掌握 QT 開發環境配置方式,理解 QT 的信號槽機制,理解 QT 的界面、資源、信號槽源碼的生成方式,學會使用 qss 樣式表來設置界面(比如漸變背景,圓角邊框,),理解並能應用 QT 的事件處理機制,能夠自定義控件(事件處理,渲染),理解 QT 的繪圖機制,理解 QT 界面程式碼和業務分離的設計模式。

WorkFlowy Tips

[249] WorkFlowy 春節禁忌清單 – WorkFlowy Tips

這清單似乎來得遲了,不過,每年都可以用。明年春節,記得先搞清楚過年什麼不能做。

[252] 「快叫人吶!」叫什麼叫,不知道是誰怎麼叫? – WorkFlowy Tips

如果你有不知道長輩或晚輩「稱謂」的困擾,我跟推友做了一個清單,試圖解決這個問題。做出來後,效果不錯。(感謝推友 @twito_nightside 協助整理)

掃 QR Code 前往 WorkFlowy 稱謂清單

想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。

還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步,歡迎加入分享你最酷的 WorkFlowy 使用技的更多同好!

💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個「提問箱」,歡迎使用,謝謝!