iT邦幫忙

0

[VSCodeVim] Vim的基本操作、模式與狀態列

  • 分享至 

  • xImage
  •  

Vim的基本操作、模式與狀態列


[系列文目錄]

在使用Vim之前,讓我們來認識一下Vim的模式(Mode)與各個模式之間的操作與轉換。

  • 普通模式(Normal Mode):為Vim啟動後的預設模式,在此模式中可以使用多種命令快速移動游標至對應位置。在使用Vim之前我們可能習慣使用方向鍵移動,現在在普通模式裡,我們改為使用右側主列上的hjkl
    四個鍵進行左、下、右、上的移動,並且使用y(yank )、d(delete )、c(change )等命令複製、刪除、修改對應游標下的文字。
  • 插入模式(Insert Mode):在普通模式下輸入i(insert)會進入插入模式。
    在此模式中可以輸入文字、自由修改與編輯。
  • 可視模式(Visual Mode):在普通模式下輸入v(visual)會選取游標下的該
    文字並進入可視模式。這個模式裡可以選取並重點標示(Highlight)文字區
    域,突顯選取的純文字區域,之後我們可以使用對應命令(ydc)操作所
    有選中的文字。
  • 命令列模式(Command Line Mode):在普通模式下,我們點擊 : 鍵會進
    入命令列模式,在此模式中輸入一段文字,最後按下Enter,即可執行輸入的
    命令。

VSCodeVim支援的所有模式如文件連結

Vim的模式轉換


Vim 裡面的各個模式轉換可以用狀態機來思考,當我們在普通模式輸入不同命令後,會進入對應的模式,再按下Esc鍵可以退出所進入的模式,如下圖所示。(VSCodeVim亦直接支援使用Ctrl/Cmd + c快捷鍵來退出目前的模
式)


(圖源:作者自製)

預設的普通模式

在VS Code 中,當我們安裝Vim Extension 並進入Vim Mode 後,我們會先進入普通模式,在這個模式下,游標會變成塊狀。


(圖源:Visual Studio Code實用指南)

同時,我們可以在最底下的狀態列看到--NORMAL-- 的字樣,確認我們已經進入普通模式,如下圖所示。


(圖源:作者自製)

進入插入模式

之後,我們輸入i,進入插入模式,如下圖所示。

進入插入模式
(圖源:Visual Studio Code實用指南)

完成輸入或相關的編輯動作後,可以和前面一樣點擊Ctrl+c(或是Esc)退出可視模式。
不過,這樣做通常沒有什麼意義,讓我們直接輸入c(Change)命令來修改下圖的這段內容,看看會發生什麼事情?

change word
(圖源:作者自製)

選中的文字會先被刪除,並進入插入模式的狀態,讓我們可以馬上輸入要修改的文字。這是c命令的標準行為,若我們在普通模式使用相關的s(substitute)命令命令修改一個字,狀態一樣會直接進入插入模式。

好的,這裡我們多認識了一個命令,並且了解不同命令跟狀態轉換之間的關聯性。那麼刪除功能的d命令呢?也許你開始好奇這些Vim命令的規則了,回到普通模式後,讓我們按u(undo)先復原文字。

現在,再次重複剛才的選取操作,但我們改為輸入d來刪除選取文字區段。刪除選中文字後,我們回到了普通模式。這也是合乎邏輯的行為,畢竟僅需刪除動作的我們,無需再度進入插入模式。

After Delete a word
(圖源:作者自製)

進入命令列模式

好的,現在讓我們輸入:,進入命令列模式吧!進入此模式後預設的游標樣式如下圖所示。

CommandLineModeUI
(圖源:作者自製)

此時,不一樣的是,在最底下的狀態列中,我們不會看到--COMMAND LINE MODE-- 的字樣,告訴我們已經進入對應模式。而是看到:與狀態列上面的游標,如下所示:


(圖源:作者自製)

現在,我們可以輸入對應命令,假設我們要跳轉到第二行,在Vim 裡面我們可以輸入:{n}來跳轉到指定行數 (此處的n為指定跳轉的行數),這裡我們接著輸入2


(圖源:作者自製)

輸入完整命令後,按下enter鍵即可執行對應命令,跳轉到第二行。


(圖源:作者自製)

本篇小結


好的,從前面文章中,我們認識了最基本的Vim 用法。Vim的設計是考量過盲打(TouchTyping)的,了解模式下的基本操作和鍵盤的姿勢,會讓我們的編輯器操作更得心應好,現在我們已經有足夠的基礎可以進階了。

透過有方法跟順序的練習,我們會逐步認識到一個新的編輯器的世界。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言