Skip to content

progden/progden.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vim for code review

從結論上說使用 vim 能有效的在程式內容中移動、選取、編輯,進一步透過建立、執行巨集,搭配 IDE 的快捷鍵進行跨檔案的移動(vim 裡面加上 plugin 也是可以達到),是可以很有效的進行程式碼修改。

基於此將常見的開發情境加入鍵盤快捷鍵,建立基於樣板的新檔案、重構、執行測試、編譯、版本控制等,完全可以更有效地進行開發。

在程式碼中移動

首先是覺得應該要使用英文輸入法(不只是新注音的英文模式)。

常用的移動當然是 j、k 做一般的上下移動,與 w、e、b 的同一行的移動。

再來是 {、} 段落的上下移動(by 空白行),這個時候開始發現程式中間留空行的重要性,第一時間在視覺上的分隔,又可以讓vim的移動更快。

當移動變快的時候 zz 就很重要了,特別是當游標移動到螢幕的最上下邊界時,可以讓目前游標的所在位置,回歸到畫面中間

H、L、M 也有一點效果,只是一行一行的移動有點難改習慣。

接下來... 進階點的移動要等搜尋時說起

一般模式 (Normal mode)

鍵盤 說明
h、← 游標向左移動
j、↓、+、<enter> 游標向下移動
+、<enter> 會到下一行第一個非空白字
k、↑ 、- 游標向上移動
- 會到上一行第一個非空白字
l、→ 游標向右移動
0、^、$、_ 游標向行首、行末移動 (同正規)
註:0 是行首,^、_ 是非空白字元行首,$ 是對應 0 的行末
<n>$ 游標向下N行的行末移動
% 會在對應的括胡來回移動 { }、[ ]、( )
(、) 向前、後一個句子(sentence)移動 (以英文的句子結尾 .!? 當作結尾),寫程式...或者中文句子基本沒有作用。
{、} 向前、後一個段落(paragraph)移動,以空行來區分
[[、]] 向前、後一個節(section)移動
H、M、L 移動到螢幕第一行、中間行、最末行
<n>G 移動到第 n 行
G 移動到檔案的最後一行
gg 移動到第一行
w、b、e、ge
W、B、E、gE
下一個字首、倒退一個字首、下一個字尾、倒退一個字尾
大寫部分是包括符號
zz、z.、zt、zb zz、z.: 將目前游標位置移動到畫面中間
zt: 將目前游標位置移動到畫面上方
zb: 將目前游標位置移動到畫面下方
f<c>、t<c>
F<c>、T<c>
向後移動到字元<c>上(find)、前(till)
向前移動到字元<c>上、後
可加上<n> ex. f3c、F3x
;、, 往後、往前重複上一個 f、t、F、t
n、N 往後、往前重複上一個搜尋
*、#
<n>*、<n>#
向後、前移動到當前的字
向後、前移動<n>個當前的字

一般模式 (Normal mode) 中編輯

鍵盤 說明
J 將下一行連接到目前行末 (Join)
~、<n>~ 大小寫轉換
轉換<n>個字
<ctrl>a、<ctrl>x 加、減游標位置的數字
可以處理 8、16 進位
在 Visual Studio 等 IDE 中,需要留意快捷鍵設定
>、< 縮排、取消縮排
dd dd: 刪除當前行
d<motion> d<motion>依照<motion>刪除
* 原本在使用 relation number 等外掛的時候,搞不懂行號為什麼下一行開始計算 1,因為 <n>dd 輸入的 n 會差 1。
後來發現跟<motion>版本指令比較符合,ex. dj、d2j等是往下刪除一行(共刪除2行)、兩行(共刪除3行)。
r<c>、R r: 替換(replace)字元 -> 字元<c>
R: 進入替換模式直到按下<ESC>為止
s<str>、S s: 替換(Substitute)字元 -> 字<str>
S: 替換目前行
c<motion>、C c: 替換(change)字,都會需要 motion 來協助
ex. cw、cE、ciw等,s = cl
C: 等同於c$

暫存 Register

鍵盤 說明
"{a-zA-Z0-9.%#:-"} 在刪除(D)、複製(Y)、貼上(p)的時候使用暫存的內容
刪除、複製使用大寫暫存時,會附加到現有的暫存後面
:reg 檢視暫存的內容

Visule Model == Select Mode

鍵盤 說明
v、V、<ctrl>v 進入字元、行選擇模式、欄選擇模式
o 切換選擇區域的頭與尾

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages