想法子記憶Vi/Vim常用操作及指令

来源:https://www.cnblogs.com/somebottle/archive/2022/04/23/vi_vim_memorizing_tricks.html
-Advertisement-
Play Games

本筆記有特殊目錄,點擊開啟: 專有目錄 在Linux系統中編輯文本總是離不開一位老幫手——Vi。而因為其誕生的年代有些久遠,有些操作在現在看來可能有點“反直覺”。 於是我決定寫這樣一篇小筆記,記錄一下我記憶Vi的這些這些 常用 操作和指令的方法(主要靠的是英語和圖示了)。 當然,正如“好記性不如爛筆 ...


本筆記有特殊目錄,點擊開啟:

在Linux系統中編輯文本總是離不開一位老幫手——Vi。而因為其誕生的年代有些久遠,有些操作在現在看來可能有點“反直覺”。

於是我決定寫這樣一篇小筆記,記錄一下我記憶Vi的這些這些 常用 操作和指令的方法(主要靠的是英語和圖示了)。

當然,正如“好記性不如爛筆頭”所言,多實踐才是熟練掌握技能的王道。

002-2022-04-02

關於Vi/Vim名詞本身

  • Vi代表的可能是Visual Instrument(可視工具)Visual Interface(可視界面)亦或就是Visual(可視化的)單詞本身。

  • Vim倒是很明顯,代表的是Vi IMproved(Vi改進版)

編輯器模式

Vi而言:

  1. 命令模式 (Command mode) ,剛進入Vi編輯器時的預設模式。在此模式下能輸入Vi的合法指令(通常是一些字元)來進行操作。

  2. 插入(輸入)模式 (Insert mode) ,顧名思義,是直截了當地編輯文本的模式。

  3. 末行(底線)模式 (Last-line mode) ,也是接受指令的一種模式,更偏向於文件的管理。
    之所以叫 “末行” 是因為指令的輸入在視窗最下方:

    lastLineMode-2022-04-07

VimVi的增強版,因此Vim完全可以相容Vi的操作,不過它的模式名可能略有差別:

  1. 正常模式 (Normal mode) ,是啟動Vim後的預設模式。

  2. 插入模式 (Insert mode) ,這個和Vi的一致。

  3. 命令(行)模式 (Command-line mode),類似Vi的末行模式。

  4. 可視模式 (Visual mode) ,和普通模式類似,不同的是可以高光選擇文字的一部分進行命令操作

    包括上述幾種模式,Vim總共有12種模式(這個說法來自Wikipedia)。但最常用的還是上面這四種,一般情況下夠用了。

    015-2022-04-06

模式切換

展開閱讀

Vi的三種模式而言,要在其間互相切換,需要借預設模式——命令模式作為一個中轉(對於Vim來說就是正常模式)。

  • 命令模式

    作為進入Vi的預設模式,我們可以把這兒當作一個小家,
    無論在哪個模式下Esc(可以記成Escape [v.]逃離。逃回家了)都可以回到命令模式。(家是永遠的港灣啊)

    EscGoHome-2022-04-06

    再提一嘴,在Vim里這個模式稱為正常模式

  • 插入模式

    通過以下按鍵指令能進入插入模式。這些按鍵通常是大小寫成對的,小寫對應的指令略顯 “溫和”大寫對應的就比較 “走極端” 了。

    InsertModeUpperAndLower-2022-04-07

    1. i / I 插入 (記作Insert [v]插入;嵌入;(在文章中)添加

      小寫的i,就是在游標所在位置進入插入模式:

      lowerInsert-2022-04-07

      大寫的I則有點“極端”,會跳轉到當前游標所在行的開頭進入插入模式:

      upperInsert-2022-04-07

    2. a / A 附加 (記作Append [v]增補,追加

      小寫的a,就是在游標所在位置之後一位進入插入模式,即所謂的“附加”:

      lowerAppend-2022-04-07

      顯而易見,大寫的A就會跳轉到當前游標所在行的末尾進入插入模式(在尾部附加):

      upperAppend-2022-04-07

    3. o / O 新增一行 (暫且記作Open new line)

      都是新增行,差別無非是往下新增還是往上新增了。

      小寫的o,就是在游標所在行的之後新建一行,然後進入插入模式:

      newLineAfter-2022-04-07

      大寫的O呢,就比較蠻橫,會把游標所在行及其以下的行整體往下頂,在原位置新建一行(相對來說就是在游標所在行上面新建一行),然後進入插入模式:

      newLineBefore-2022-04-07

    4. s / S 剪切(取代) (可以直接記刪的拼音Shan,也可以記成Substitute [v]取代

      小寫的s,會剪切游標所在位置右邊的字元,然後進入插入模式:

      subWord-2022-04-07

      大寫的S就很暴躁了,會剪切游標所在行,然後進入插入模式:

      subLine-2022-04-07

      Substitute的話,可以理解為這個操作是剪切原有字元/行後進行插入,取代原有的字元/行


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python 是一種極其多樣化和強大的編程語言!當需要解決一個問題時,它有著不同的方法。在本文中,將會展示列表解析式 (List Comprehension)。我們將討論如何使用它?什麼時候該或不該使用它? 列表解析式的優勢 •比迴圈更節省時間和空間。 •需要更少的代碼行。 •可將迭代語句轉換為公式 ...
  • 概述 目前主流的網路數據分析工具主要有兩類,一類是http協議分析工具,如fiddler,這類工具擅長對字元串類型協議分析;另一類是原始網路數據包的監聽分析,如Wireshark,這類工具擅長分析網路底層行為。這兩類工具一類擅長字元串協議分析,另一類擅長網路底層行為分析,但是上述兩類工具分析二進位流 ...
  • 微信開放平臺:微信掃碼登錄功能 官方文檔:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html 1. 授權流程說明 微信OAuth2.0授權登錄讓微信用戶使用微信身份安全登錄 ...
  • 《零基礎學Java》 資料庫操作 資料庫基礎 資料庫是一種存儲結構,允許使用各種格式 輸入、處理、檢索 數據,且不用在每次需要數據時重新輸入數據。 select 語句: select語句用於查詢數據表中的數據。 select 語句 語法: select 所選欄位列表 from 數據表名 where ...
  • 在Python的應用實踐過程中,經常會遇到字元串使用的問題,我花了點時間,專門整理了 Python 關於 string 的知識,主要內容 包括以下幾個方面: 為了方便以後查看,速查表的形式整理了 Python字元串的內容,《Python字元串速查表》(V1.0版)一共 5 頁,先來一 張圖看下概覽哈 ...
  • SunnyUI.Net, 基於 C# .Net WinForm 開源控制項庫、工具類庫、擴展類庫、多頁面開發框架 Blog: https://www.cnblogs.com/yhuse Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://git ...
  • 之前寫過一篇如使用阿裡雲上部署.NET 3.1自定義運行時的文章,吐槽一下,雖然現在已經2022年了,但是阿裡雲函數計算的支持依然停留在.NET Core 2.1,更新緩慢,由於程式解包大小的限制,也不能放太複雜的東西的上去,雖然現在.NET 6裁剪包能挺好地解決這個問題,但是心裡還是不爽。 需求 ...
  • 之前曾在《C# 中容易忽視的 Encoding.GetByteCount 記憶體問題》中提到過,可以使用 Encoding.Default.GetByteCount 方法來判斷字元是全寬(寬度為 2)還是半寬(寬度為 1)。 這個方法實際上是計算對字元編碼後產生的位元組數,只是在中文環境下,寬字元在使用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...