Vim 指令

Vim 是一款功能強大但學習曲線陡峭的文本編輯器,核心在于其模式化操作。掌握常用指令能極大提升效率。以下是指令分類整理:


一、核心模式切換 (必須掌握!)

  • i:在光標進入?插入模式 (Insert Mode)

  • a:在光標進入?插入模式 (Insert Mode)

  • o:在下方新建一行并進入插入模式

  • O:在上方新建一行并進入插入模式

  • ESC?或?Ctrl+[退出當前模式,回到?普通模式 (Normal Mode)?- 最常用!

  • v:進入?可視模式 (Visual Mode)?(字符選擇)

  • V:進入?可視行模式 (Visual Line Mode)?(行選擇)

  • Ctrl+v:進入?可視塊模式 (Visual Block Mode)?(列塊選擇)

  • ::進入?命令行模式 (Command-Line Mode)

?? 牢記:大部分時間你在?普通模式?編輯完記得按?ESC?返回普通模式。


二、移動光標 (普通模式下)

  • 基本移動:

    • h?←,?j?↓,?k?↑,?l?→ (或方向鍵)

    • w?/?W:跳到下一個單詞開頭 (W忽略標點)

    • b?/?B:跳到上一個單詞開頭 (B忽略標點)

    • e?/?E:跳到當前/下一個單詞結尾 (E忽略標點)

    • 0?(零):跳到行首

    • ^:跳到行首第一個非空白字符

    • $:跳到行尾

    • gg:跳到文件第一行

    • G:跳到文件最后一行

    • :[行號]?+?回車:跳到指定行 (如?:10?跳到第10行)

    • Ctrl+f:向下翻頁

    • Ctrl+b:向上翻頁

    • Ctrl+d:向下翻半頁

    • Ctrl+u:向上翻半頁

    • H:跳到當前屏幕頂部

    • M:跳到當前屏幕中間

    • L:跳到當前屏幕底部

  • 查找移動:

    • /?+?關鍵詞?+?回車向下搜索關鍵詞 (如?/hello)

    • ??+?關鍵詞?+?回車向上搜索關鍵詞

    • n:查找下一個匹配項

    • N:查找上一個匹配項

    • f?+?字符:將光標移動到當前行下一個指定的字符上 (如?fa?找下一個?a)

    • F?+?字符:將光標移動到當前行上一個指定的字符

    • t?+?字符:將光標移動到當前行下一個指定的字符

    • T?+?字符:將光標移動到當前行上一個指定的字符

    • %:在配對的括號?(),?[],?{}?之間跳轉


三、編輯文本 (普通模式下)

  • 刪除:

    • x:刪除光標下的字符

    • X:刪除光標前的字符

    • dw:從光標位置刪除到下一個單詞開頭

    • d$?或?D:從光標位置刪除到行尾

    • d0:從光標位置刪除到行首

    • dd刪除整行

    • [數字]dd:刪除從光標開始的指定行數?(如?3dd?刪除3行)

    • daw刪除光標所在的單詞?(包括周圍空格)

    • diw刪除光標所在的單詞?(不包括周圍空格)

  • 復制 (yank):

    • yy復制整行

    • [數字]yy:復制從光標開始的指定行數?(如?3yy?復制3行)

    • yw:復制從光標到下一個單詞開頭的文本

    • y$:復制從光標到行尾的文本

    • y0:復制從光標到行首的文本

  • 粘貼 (put):

    • p:在光標粘貼

    • P:在光標粘貼

  • 撤銷/重做:

    • u撤銷上一次操作

    • Ctrl+r重做?(撤銷掉撤銷)

  • 修改/替換:

    • r?+?字符替換光標下的字符 (如?ra?替換成?a)

    • R:進入替換模式?(連續替換多個字符,按?ESC?退出)

    • cw刪除從光標到單詞結尾并進入插入模式?(Change Word)

    • c$?/?C刪除從光標到行尾并進入插入模式

    • cc?/?S刪除整行并進入插入模式

    • s刪除光標下的字符并進入插入模式

    • ~切換光標下字符的大小寫

  • 縮進:

    • >>:當前行增加縮進

    • <<:當前行減少縮進

    • =自動縮進當前行 (或選中的行/塊)


四、可視模式操作 (先按?v,?V,?Ctrl+v?選中)

  • 選中文本后,可以使用普通模式下的編輯命令:

    • d?/?x:刪除選中文本

    • y:復制選中文本

    • c:刪除選中文本并進入插入模式

    • >:增加縮進

    • <:減少縮進

    • =:自動縮進

    • u:將選中文本轉為小寫

    • U:將選中文本轉為大寫


五、命令行模式 (按?:?進入)

  • 文件操作:

    • :w保存文件

    • :w [文件名]另存為到指定文件名

    • :q退出?Vim (如果文件未修改)

    • :q!強制退出?Vim (不保存修改)

    • :wq?或?:x?或?ZZ保存并退出

    • :e [文件名]打開另一個文件進行編輯

  • 搜索與替換:

    • :%s/old/new/g全局替換所有?old?為?new

    • :%s/old/new/gc:全局替換,每次替換前詢問確認

    • :s/old/new/g:替換當前行的所有?old?為?new

    • :起始行,結束行s/old/new/g:替換指定行范圍的所有?old?為?new?(如?:10,20s/foo/bar/g)

  • 其他常用:

    • :set nu:顯示行號

    • :set nonu:隱藏行號

    • :set hlsearch:高亮顯示搜索結果

    • :set nohlsearch?或?:nohl關閉搜索結果高亮 (臨時)

    • :help [命令]:查看幫助?(如?:help w)

    • :! [shell命令]執行外部 shell 命令?(如?:! ls)

    • :r [文件名]讀取文件內容并插入到光標后

    • :r ! [shell命令]:讀取?shell 命令的輸出并插入到光標后 (如?:r ! date)


六、組合與重復

  • 操作符 + 動作 = 強大功能

    • d?(刪除) +?w?(單詞) =?dw?(刪到單詞尾)

    • c?(修改) +?$?(行尾) =?c$?(修改到行尾)

    • y?(復制) +?}?(下一段) =?y}?(復制下一段)

  • 數字前綴:重復執行

    • 5j:向下移動5行

    • 3dw:刪除3個單詞

    • 10x:刪除10個字符

    • 4p:粘貼4次


七、實用技巧

  1. .?(點命令):?重復上一次的編輯操作?(在普通模式下)。

  2. 宏錄制:

    • q?+?寄存器字母?(如?qa):開始錄制宏到寄存器?a

    • 執行一系列操作

    • q:停止錄制

    • @?+?寄存器字母?(如?@a):執行存儲在寄存器?a?中的宏

    • @@:重復執行上一次執行的宏

  3. 分屏:

    • :sp [文件名]:水平分割窗口 (打開/切換文件)

    • :vsp [文件名]:垂直分割窗口 (打開/切換文件)

    • Ctrl+w?+?方向鍵?/?h/j/k/l:在窗口間切換焦點

    • Ctrl+w?+?w:循環切換窗口

    • Ctrl+w?+?c:關閉當前窗口

    • Ctrl+w?+?q:關閉當前窗口 (如果只剩一個窗口則退出Vim)

    • Ctrl+w?+?=:使所有窗口等寬等高

    • Ctrl+w?+?_:最大化當前窗口高度

    • Ctrl+w?+?|:最大化當前窗口寬度

  4. 標簽頁:

    • :tabnew [文件名]:在新標簽頁打開文件

    • gt?/?gT:切換到下一個/上一個標簽頁

    • :tabn?/?:tabp:切換到下一個/上一個標簽頁 (命令模式)

    • :tabc:關閉當前標簽頁


八、配置 (~/.vimrc)

  • 創建或編輯?~/.vimrc?文件來自定義 Vim 行為。常用設置示例:

  • set number          " 顯示行號
    set relativenumber  " 顯示相對行號 (可選)
    syntax on           " 語法高亮
    set tabstop=4       " Tab鍵寬度為4空格
    set shiftwidth=4    " 自動縮進寬度為4空格
    set expandtab       " 將Tab轉換為空格
    set autoindent      " 自動縮進
    set smartindent     " 智能縮進
    set hlsearch        " 高亮搜索結果
    set ignorecase      " 搜索忽略大小寫
    set smartcase       " 如果搜索包含大寫則區分大小寫
    set mouse=a         " 啟用鼠標支持 (可選)

學習建議

  1. 先掌握核心:?模式切換 (i,?ESC)、保存退出 (:wq,?:q!)、基本移動 (hjkl)、刪除 (x,?dd)、復制粘貼 (yy,?p)、撤銷 (u)。這是生存技能。

  2. 練習移動:?高效移動是Vim的靈魂。熟練掌握?w,?b,?e,?$,?0,?gg,?G,?/

  3. 理解?操作符 + 動作?范式:?這是Vim編輯能力的核心 (d,?c,?y?+?w,?$,?t?等)。

  4. 逐步學習:?不要試圖一次記住所有命令。在日常編輯中刻意練習新學的1-2個命令。

  5. 善用幫助:?:help?是寶藏。遇到不熟悉的命令隨時查 (:help x,?:help :w?等)。

  6. 使用 Vim Tutor:?在終端中輸入?vimtutor,這是官方交互式教程,強烈推薦初學者完成。

Vim 的精髓在于組合和效率。?熟練后,你的手指幾乎不用離開主鍵盤區就能完成復雜編輯。

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

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

相關文章

vue2中使用xgplayer播放流視頻

1、官網 2、安裝后無法播放時&#xff0c;經測試&#xff0c;需要降低版本 "xgplayer-hls": "2.2.2","xgplayer": "2.31.6"改為以上版本可以正常播放 3、完整使用 &#xff08;1&#xff09;引入 import xgplayer import hlsjsPlayer…

Jmeter進階篇(35)完美解決Jmeter轉換HTML報告報錯“Begin size 0 is not equal to fixed size 5”

今天博主在使用Jmeter運行完壓測,使用生成的csv文件,運行以下命令: C:\apache-jmeter-5.2.1\bin>jmeter -g C:\res.csv -o C:\report生成HTML報告時,發現報錯“Begin size 0 is not equal to fixed size 5”。 問題原因 原因是我:本地用的是JDK17,但Jmeter5.2.1僅支…

linux中tcpdump抓包中有組播數據,應用程序收不到數據問題

問題描述服務器運行正常&#xff0c;維保需要&#xff0c;重啟服務器后應用程序無法收到組播的媒體數據。百思不得其解。原因分析最終的定位原因是 linux系統的自我保護機制導致的。rp_filter&#xff08;反向路徑過濾&#xff09;是Linux內核的一個安全特性&#xff0c;用于防…

人工智能-基礎篇-29-什么是低代碼平臺?

低代碼平臺&#xff08;Low-Code Development Platform, LCDP&#xff09;是一種通過可視化界面和少量代碼&#xff08;或無需代碼&#xff09;快速構建應用程序的開發工具。它的核心目標是通過簡化開發流程&#xff0c;降低技術門檻&#xff0c;使企業能夠更高效地響應業務需求…

PyTorch隨機擦除:提升模型抗遮擋能力

PyTorch中內置的隨機擦除&#xff08;Random Erasing&#xff09;數據增強通過torchvision.transforms.RandomErasing實現&#xff0c;以下是原理和用法的詳細說明&#xff1a;核心原理正則化作用&#xff1a; 隨機擦除在訓練圖像上隨機遮蓋一個矩形區域&#xff0c;模擬遮擋場…

微信小程序交互精髓:點擊操作與狀態管理實戰

目錄 一、點擊事件綁定&#xff1a;bindtap 與 catchtap 的正確使用 基礎語法對比 事件對象詳解 二、點擊切換選中狀態&#xff1a;數據驅動視圖的實現 1. 單元素狀態切換 2. 多元素單選狀態 3. 多元素多選狀態 三、樣式動態切換&#xff1a;數據綁定與 CSS 的完美結合 …

Language Models are Few-Shot Learners: 開箱即用的GPT-3(二)

接上一篇 Approach 前面的摘要和Introduction做了一些概要性的介紹,論文在第二章,也就是approach中,介紹了模型的設計,zero,one,few-shot的設計等等。 這一章一開頭就說,GPT-3的結構和GPT-2的結構一樣,只是在相應的把模型尺寸,數據規模,訓練時間等增加了。Our bas…

【養老機器人】核心技術

1. 毫米波雷達如何檢測心跳和呼吸&#xff1f;毫米波雷達&#xff08;通常工作在60GHz或77GHz頻段&#xff09;可以探測到人體胸腔的微米級位移&#xff0c;而心跳和呼吸會引起胸腔的周期性運動&#xff1a;呼吸&#xff1a;幅度較大&#xff08;約5-10毫米&#xff09;&#x…

二 Javascript 入門

我們 從已經知道了 Javascript的歷史以及什么是Javascript&#xff0c;那實際編寫的時候在哪里編寫&#xff1f; script 標簽 HTML 為我們提供了無數的標簽來做無數的事情。例如&#xff0c; 用于為段落添加邊距&#xff0c; 用于使文本加粗&#xff0c; 用于在網頁上嵌入音…

《信息技術服務監理 第5部分:軟件工程監理規范》(GB/T 19668.5-2018)標準解讀

《信息技術服務監理 第 5 部分&#xff1a;軟件工程監理規范》&#xff08;GB/T 19668.5-2018&#xff09;是規范軟件工程監理服務的國家標準&#xff0c;旨在為軟件工程監理的規劃設計、招標、設計、實施、驗收等階段及相關支持過程提供明確的監理要求、服務內容和實施要點。 …

RedisJSON 路徑語法深度解析與實戰

一、兩種路徑語法概覽語法類型觸發標志簡介JSONPath以 $ 開頭全功能路徑&#xff0c;支持遞歸 (..)、通配符 (*)、切片 ([start:end:step])、過濾 (?())、腳本表達式等Legacy以 . 或鍵名開頭早期版本&#xff08;v1&#xff09;遺留語法&#xff0c;只支持簡單的點式和中括號&…

從Rust模塊化探索到DLB 2.0實踐|得物技術

一、前言在云原生架構高速迭代的背景下&#xff0c;基礎設施的性能瓶頸與安全隱患成為技術演進的關鍵挑戰。本文系統記錄了團隊基于Rust語言改造Nginx組件的完整技術路徑&#xff1a;從接觸Cloudflare的quiche庫&#xff0c;引發對Rust安全特性的探索&#xff0c;到通過FFI實現…

【 MySQL】一點點相關的記錄

打開 MySQL Workbench 并連接到你的數據庫在 MySQL Connections 下&#xff0c;選擇連接的數據庫實例&#xff08; Local instance MySQL80&#xff09;登錄時輸入 用戶名 和 密碼。 root&#xff0c;密碼是在 MySQL 安裝時設置的密碼創建新數據庫登錄后&#xff0c;在 MySQL W…

旅游企業如何通過數字化轉型實現高效運營

在旅游行業競爭日益激烈、游客需求日趨多樣的當下&#xff0c;數字化管理成為旅游企業提升競爭力的關鍵協同辦公系統以其豐富功能與靈活特性&#xff0c;為旅游行業帶來全新的數字化變革&#xff0c;助力企業高效運營。優化行程規劃與調度旅游行程的規劃與調度繁雜且關鍵。協同…

大數據Spark(六十二):Spark基于Yarn提交任務流程

文章目錄 Spark基于Yarn提交任務流程 一、Yarn-Client模式 1、提交命令 2、任務執行流程 二、Yarn-Cluster模式 1、提交命令 2、任務執行流程 Spark基于Yarn提交任務流程 在Yarn模式下&#xff0c;Spark的任務提交同樣根據Driver程序運行的位置不同&#xff0c;分為cli…

Docker 高級管理-容器通信技術與數據持久化

(1)創建一個叫 my-net 的 bridge 類型的網絡(2)查看都有哪些網絡(3)運行一個容器井連接到新建的 my-net 網絡(4)運行一個容器井加入到 my-net 網絡2:Host 模式由于使用了 Host 模式&#xff0c;容器會直接使用宿主機的網絡端口&#xff0c;因此可以直接在宿主機上通過 localhos…

在 Ubuntu 24.04 中安裝 Python 2.7、pip 及 mysqlclient==1.4.6 的完整指南

在 Ubuntu 24.04 中安裝 Python 2.7、pip 及 mysqlclient1.4.6 的完整指南 前言 隨著 Ubuntu 24.04 的發布&#xff0c;許多舊的軟件包已被移除或更新&#xff0c;但老項目需要 Python 2 。本文將詳細介紹自己如何在 Ubuntu 24.04 中成功安裝 Python 2.7、pip 以及 mysqlclient…

doker以及網站案例

一.docker搭建1.安裝dockerapt-get install docker.io docker-compose2.編寫配置文件&#xff08;注意路徑正確&#xff09;vim /etc/systemd/system/docker.service.d/http-proxy.conf[Service] Environment"HTTP_PROXYhttp://科學上網訪問的ip:端口" Environment&q…

【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 獲取自定義編譯參數

目錄 1 -> HAP/HSP運行時獲取編譯構建參數 1.1 -> 生成BuildProfile類文件 1.2 -> 在代碼中獲取構建參數 1.3 -> 默認參數 1.4 -> 自定義參數 2 -> HAR運行時獲取編譯構建參數 2.1 -> 生成BuildProfile類文件 2.2 -> 在代碼中獲取構建參數 2.…

NGINX系統基于PHP部署應用

目錄 部署 配置 部署 準備三臺主機&#xff0c;一臺服務端&#xff0c;兩臺客戶端&#xff1b; 1.在兩臺客戶端主機上分別安裝 MySQL; [rootmaster /]#yum install -y mysql nginx; [rootmaster /]#yum install -y nginx PHP; [rootmaster /]#yum install -y php PHP-m…