從零學起VIM

前言

筆者早年剛入行的時候就接觸過Vim,當時還是真正的菜鳥,帶我的師父是一個華為骨干員工,猶記得他給我指導如何保存并關閉文本:按Esc,然后輸入:wq。還記得自己打開Vim編輯器,一個字符都敲不進去,然后問旁邊的同事(此人年紀輕輕,但是擅長linux,我們都叫他XX大佬),他邪魅一笑說“i”,我第一反應就是他故意逗我玩,然后他認真地說“你沒有聽錯,就是鍵盤上的i”。為何時隔多年我還記得這兩件微不足道的小事?原因就是初次接觸Vim留給我深刻的印象:神秘感!

講真,這幾年的工作中,我很少用Vim,可能是因為大多使用Windows操作系統。但是后來涉足跨平臺開發,甚至是嵌入式,就發現這東西還必須得會!因此,決定來個“朝花夕拾”。考慮到網上類似的教程非常之多,如果僅僅復制粘貼這些文字和命令,那么會非常枯燥無味,人們是不喜歡缺乏靈魂的事物的!你看,縱使我早年接觸過Vim,但是因為用進廢退,目前憑直覺能想起來的命令就是上述的那兩個小故事。每次真的要用,還要在網上搜索一番。

下面我會以一個小白的心態重新認識這個“老朋友”,盡量符合嬰兒認識事物的這個過程。

一、Vim安裝

運行

OK

下一步

我接受,下一步

下一步

下一步

改安裝路徑,安裝

完成

二、常用命令實踐

1.復現小故事情節

新建空文本

鼠標右鍵,用Vim編輯

按“i”,下面出現”—插入—"字樣,然后鍵入”hello”,再按“Esc”(切換模式,用于執行命令),敲入我師父傳授的“:wq”,則成功寫入和保存文本!

2.刪除字符,刪除整行,刪除單詞

按“x”刪除了Hello的首字母H,按”dd”刪除了第一行整行,按“dw”刪除了單詞This。

3.復制粘貼與剪切粘貼

按“yy”復制第一行,用↓鍵將光標移動到底端,按“p”進行粘貼;接著用↑鍵將光標移動到第2行,按”dd”剪切該行,用↓鍵將光標移動到底端,按“p”進行粘貼。

4.跳轉移動光標

按“gg”移動到文檔開始,按大寫”G”移動到文檔末尾,按“:3”移動到第三行,由此可以看出行號是從1開始編碼而非從0編碼。?

5.撤銷與重做

光標放到文檔開頭,按“dd”刪除第一行,按“u”撤銷刪除,按”Ctrl+r”再此刪除,按“u”再次撤銷刪除。

6.塊選擇

光標放到文檔開頭,按“v”選擇字符,按→和←鍵選擇多字符,再次把光標放到文檔開頭,按“Ctrl+v”選擇塊字符,按↓和→選擇塊區域。

7.設置行號

輸入“:set nu”設置行號,輸入“set nonu”取消行號。

8.查找替換

輸入“:%s/vim/VIM”,全文搜索小寫的vim將其全部替換為大寫的VIM。

9.拓展?

    0:移動到行首;

    $:移動到行尾;

    ndd:刪除n行(包括當前行在內)

    a:在光標后插入;

    o:在當前行下方插入新行;

    O:在當前行上方插入新行;

    :split、:vsplit:分別水平和垂直分割窗口;

    Ctrl + w、Ctrl + w:在窗口之間切換;

    :w:保存文件;

    :q:退出;

    :q!:強制退出,不保存更改。

    三、總結

    vim的命令繁多,但常用的無非就是復制粘貼刪除等,能用到查找替換應付常規操作已經足夠了。對于筆者而言,把所有命令全死記硬背無疑是一種災難,提綱挈領,舉一反三才能把知識學活。另外,舍棄或許是另一種擁有,比如h/j/k/l可控制左/下/上/右,但總覺得沒有方向鍵用著直觀。因此,實踐中潛移默化的記憶是最有效的,本文僅作拋磚引玉之用。?

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/bicheng/85357.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85357.shtml
    英文地址,請注明出處:http://en.pswp.cn/bicheng/85357.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    不依賴rerank 模型排序通過使用 PostgreSQL 中的 pgvector 與 tsearch2 函數進行混合搜索提高召回率

    前言 在向量搜索中,召回率是一個關鍵指標,它衡量搜索結果的相關性。然而,提高召回率往往會犧牲其他指標,如索引大小或查詢延遲。為了平衡這些權衡,混合搜索技術應運而生。本文將介紹如何在 PostgreSQL 中結合 pgvecto…

    Uniapp 跨平臺開發框架全面解析:一次開發,多端運行

    在移動互聯網時代,開發者面臨著一個重要挑戰:如何高效地開發出能在多個平臺(iOS、Android、Web、小程序等)上運行的應用?傳統的原生開發方式需要為每個平臺單獨編寫代碼,導致開發周期長、維護成本高。而 Un…

    ios如何把H5網頁變成主屏幕webapp應用

    一、將 H5 頁面添加到主屏幕的步驟 打開 Safari 瀏覽器 在 iPhone 上打開 Safari 瀏覽器,訪問目標網頁(H5 頁面)。 點擊分享按鈕 在 Safari 瀏覽器底部點擊 “分享” 圖標(箭頭向上的按鈕)。 添加到主屏幕 在分享菜單…

    Node.js 項目啟動命令大全 (形象版)

    文章目錄 Node.js 項目啟動命令大全 🌟?(形象版)一、🔍 如何查看項目啟動命令(魔法書目錄)package.json scripts 參數詳解開發相關腳本測試相關腳本構建相關腳本代碼質量相關腳本最佳實踐 二、&#x1f68…

    愛普特APT32F1104C8T6單片機 高抗干擾+硬件加密雙保障

    愛普特APT32F1104C8T6單片機深度解析 1. 產品定位 APT32F1104C8T6 是愛普特半導體(APT)推出的 32位高性能經濟型單片機,基于 ARM Cortex-M0內核,采用 LQFP48封裝,主打 高性價比、低功耗、強抗干擾,是替代進…

    使用uni-app ios 打包流程

    配置幾個步驟即可 1、打包ios需要BundleID ID 2、證書私鑰密碼 3、信任文件證書文件 4、私鑰證書 5、打包 6、獲取打包后的ipa文件 7、通過愛思助手安裝到iso手機上 8、完成 1、下載:App Uploader去獲取我們想要的證書私鑰等文件 2、下載完成解壓后的文件如下打…

    仿muduo庫實現并發服務器

    1.實現目標 仿muduo庫One Thread One Loop式主從Reactor模型實現高并發服務器: 通過實現高并發服務器的組件,可以快速實現一個高并發服務器的搭建,并且,通過組內不同應用層協議的支持,可以快速完成高性能服務器的搭建…

    迭代器模式:集合遍歷的統一之道

    引言:集合遍歷的演進之路 在軟件開發中,集合遍歷是我們每天都要面對的基礎操作。從最初的數組索引遍歷到現代的流式處理,我們經歷了: #mermaid-svg-KwTr9k8JgbwRTDhU {font-family:"trebuchet ms",verdana,arial,sans-…

    Spring Security OAuth2 組件

    我們來系統地講解一下 Spring Security OAuth2 這個強大的組件。我會從概念、作用、核心組件,以及實際應用場景來為你剖析。 1. 什么是 Spring Security OAuth2? 簡單來說,Spring Security OAuth2 是 Spring Security 框架的一個模塊&#…

    Redis的持久化功能

    Redis的持久化功能能夠將內存中的數據保存到磁盤,從而在重啟后恢復數據。下面為你詳細介紹Redis的兩種主要持久化方式及其配置方法。 RDB(Redis Database)持久化 RDB持久化是通過生成某個時間點的數據集快照來實現的。它具有高性能的特點&a…

    Chrome 將成為下一個 IE6

    最近在技術圈刷到一個帖子,說:“Chrome 就快變成新的 IE6 了。” 乍一看有點危言聳聽,但你一細品,發現還真挺像回事。 想當年:IE6 是怎么垮的? IE6 當年多風光?全球市場份額一度超過 90%&#…

    Redis 配置文件詳解redis.conf 從入門到實戰

    一、redis.conf 是什么? Redis 的配置文件(默認命名為 redis.conf,Redis 8.0 之后改為 redis-full.conf)控制著服務運行的各項參數。該文件采用以下結構: 指令名 參數1 參數2 ... 參數N例如: replicaof …

    autoware docker的安裝

    前言 官方的安裝說明: 官方的安裝說明 安裝前,請確認安裝的硬件: CPU with 8 cores16GB RAM[Optional] NVIDIA GPU (4GB RAM) 滿足需求 1. 安裝軟件依賴 這一步主要是安裝三個軟件: DockerNVIDIA Container Toolkit (pref…

    AWS 解決方案深度剖析:Amazon QLDB — 構建可信賴、不可變的數據審計基石

    導言:數據可信的挑戰 在現代應用開發中,尤其是在金融、供應鏈、身份認證、政府事務、醫療記錄管理等領域,數據完整性和歷史追溯性至關重要。我們常常面臨以下挑戰: 審計困難: 如何證明數據從誕生至今未被篡改&#xf…

    Leetcode-?1358. 包含所有三種字符的子字符串數目?

    Problem: 1358. 包含所有三種字符的子字符串數目 思路 滑動窗口 解題過程 滑動窗口:使用左右指針 l 和 r 維護一個窗口,窗口內字符的頻次由 cnt 記錄。 右指針擴展:右指針 r 不斷右移,將字符加入窗口并更新頻率。 左指針收縮&a…

    iTunes 無法備份 iPhone:10 種解決方法

    Apple 設備是移動設備市場上最先進的產品之一,但有些人遇到過 iTunes 因出現錯誤而無法備份 iPhone 的情況。iTunes 拒絕備份 iPhone 時,可能會令人非常沮喪。不過,幸運的是,我們有 10 種有效的方法可以解決這個問題。您可以按照以…

    Unity 接入抖音小游戲一

    目錄 一、搭建小游戲環境 二、接入抖音SDK 1.初始化 2.登錄 3.分享 4.添加到桌面 5.側邊欄功能 6. 接入流量主 三、完整代碼 下一篇傳送門 Unity 接入抖音小游戲二 -CSDN博客 一、搭建小游戲環境 我這邊因為沒有下載其他版本的Unity所以就先用2022.3.57f1了 大家還是下載…

    Node.js 項目啟動命令全面指南:從入門到精通(術語版)

    文章目錄 Node.js 項目啟動命令全面指南:從入門到精通一、核心啟動命令深度解析1. 基礎命令結構與執行機制2. 參數傳遞機制詳解 二、常用命令分類詳解1. 運行環境命令對比2. 質量保障命令詳解3. 構建部署全流程 三、高級配置實戰技巧1. 環境變量管理進階2. 命令組合…

    創意風格行業PPT模版分享

    極簡主題PPT模版,設計類PPT模版,快樂童年成長PPT模版,教育機構通用PPT模版,創意風格行業PPT模版 創意風格行業PPT模版分享:https://pan.quark.cn/s/3bac52e09479

    Java + Spring Boot + MyBatis 枚舉變量傳遞給XML映射文件做判斷

    枚舉定義 ReagentStatus.java package com.weiyu.utils.enums;import lombok.Getter;/*** 試劑狀態枚舉*/ Getter public enum ReagentStatus {// 常規REGULAR,// 少庫存LESS_INVENTORY,// 零庫存ZERO_INVENTORY,// 將過期WILL_EXPIRE,// 已過期EXPIRED,// 已注銷LOGGED,// 全…