最強文本編輯器 VIM 指令大全

Vim 是從 Vi 編輯器發展出來的一款極其強大的文本編輯器,它保留了 Vi 編輯器的所有功能,并添加了許多新特性。Vim 具有代碼補全、語法高亮、錯誤跳轉、批量化處理等編輯功能,還支持異常豐富的插件擴展,且整個編輯全程可通過鍵盤完成,無需使用鼠標,以致其成為眾多程序員一款高效的編程開發利器。

本節介紹關于 VIM 的一些命令與快捷方式,關于 VIM 獲取與安裝可以參考最強文本編輯器 VIM 獲取與安裝。VIM 難就難在復雜的操作命令和脫離鼠標的痛苦,其實只要掌握了技巧并不多難。

VIM 模式

  • 命令模式(Command mode)
  • 輸入模式(Insert mode)
  • 視圖模式(Visual mode)
  • 末行模式(Last line mode)

模式轉換

命令描述
i, I, a, A, o, O, s, Scommand 模式 —> insert 模式
escinsert 模式 --> command 模式
v, Vcommand 模式 --> visual 模式
escvisual 模式 --> command 模式
:, /command 模式 —> 末行模式

常用命令

注:帶 :/? 的是在末行命令下使用的命令。

打開文件

命令描述
vim filename打開或新建文件,并將光標置于第一行的首部
vim -r filename恢復上次 vim 打開時崩潰的文件
vim -R filename把文件以只讀方式打開
vim + filename打開文件,并將光標置于最后一行的首部
vim +n filename打開文件,并將光標置于第 n 行的首部
vim +/str filename打幵文件,并將光標置于第一個與 str 匹配的位置
vim -c command filename在對文件進行編輯前,先執行指定的命令
vim file1 file2 file3 …打開多個文件
vim -On file1 file2 …打開多個文件并左右分屏
vim -on file1 file2 …打開多個文件并上下分屏

查看文件

命令描述
:ls列出當前打開的所有文件
:bn打開多個文件時,切換顯示下一個文件
:bp打開多個文件時,切換顯示上一個文件
:sp filename上下分割,并打開一個新的文件
:vsp filename左右分割,并打開一個新的文件
:next切換至下一個文件
:prev切換至前一個文件
:last切換至最后一個文件
:first切換至第一個文件
Ctrl + w, s按下 ctrl + w,再按下 s,上下分屏打開當前文件
Ctrl + w, v按下 ctrl + w,再按下 v,左右分屏打開當前文件
Ctrl + w, h文件左右分屏時,將光標定位到左邊屏幕
Ctrl + w, l文件左右分屏時,將光標定位到右邊屏幕
Ctrl + w, H文件左右分屏時,將當前分屏移動到左邊
Ctrl + w, L文件左右分屏時,將當前分屏移動到右邊
Ctrl + w, j文件上下分屏時,將光標定位到下邊屏幕
Ctrl + w, k文件上下分屏時,將光標定位到上邊屏幕
Ctrl + w, J文件上下分屏時,將當前分屏移動到下邊
Ctrl + w, K文件上下分屏時,將當前分屏移動到上邊
Ctrl + w, c文件分屏顯示時,關閉當前分屏
Ctrl + w, q文件分屏顯示時,關閉當前分屏直到退出 VIM

操作文件

命令描述
:q不保存僅退出
:q!不保存僅退出(強制退出)
:qa全部退出
:w保存
:w!強制保存
:wq保存退出
:wq!強制保存退出
:x保存退出
:w filename另存到 filename 文件
:saveas filename另存到 filename 文件
:e filename打開或新建一個文件
:e!放棄所有更改,恢復文件到上次保存

功能命令

命令描述
:set nu顯示行號
:set nonu取消顯示行號
:set ic忽略字符大小寫
:set noic區分字符大小寫
:syntax on語法高亮
:syntax off取消語法高亮
:changes查看文件變化

光標插入

命令描述
i光標插在當前字符左側
I光標插在當前行的行首
a光標插在當前字符右側
A光標插在當前行的行尾
o新增下一行,并將光標插在行首
O新增上一行,并將光標插在行首
s刪除光標所在字符,并將光標插在此處
S刪除光標所在行,并將光標插在行首

光標移動

命令描述
h光標向左移動 1 個字符
j光標向下移動 1 個行
k光標向上移動 1 個行
l光標向右移動 1 個字符
nj光標向下移動 n 個行
nk光標向上移動 n 個行
H光標移動到屏幕最上方一行的第 1 個字符
M光標移動到屏幕中央一行的第 1 個字符
L光標移動到屏幕最下方一行的第 1 個字符
G移動到這個文件的最后一行
nG移動到這個文件的第 n 行
gg移動到這個文件的第一行,相當于 1G
n + [enter]光標移動向下移動 n 行
n + [space]光標移動向右移動 n 個字符
+光標移動到非空格符的下一行
-光標移動到非空格符的上一行
w光標移動到下個單詞首部
b光標移動到上個單詞首部
e光標移動到下個單詞尾部
ge光標移動到上個單詞尾部
0光標移動到本行行首
$光標移動到本行行尾
^移動到行首非空字符位置
g_移動到行尾非空字符位置
fa移動到本行光標處開始向后第一個為 a 的字符處
nfa移動到本行光標處開始向后第 n 個為 a 的字符處
Fa移動到本行光標處開始向前第一個為 a 的字符處
nFa移動到本行光標處開始向前第 n 個為 a 的字符處
ta移動到本行光標處開始向后第一個為 a 的字符的前一個字符處
nta移動到本行光標處開始向后第 n 個為 a 的字符的前一個字符處
Ta移動到本行光標處開始向前第一個為 a 的字符的前一個字符處
nTa移動到本行光標處開始向前第 n 個為 a 的字符的前一個字符處

文件翻頁

命令描述
Ctrl + f屏幕向下移動一頁
Ctrl + b屏幕向上移動一頁
Ctrl + d屏幕向下移動半頁
Ctrl + u屏幕向上移動半頁
zt移動屏幕將當前行移動到屏幕上方
zz移動屏幕將當前行移動到屏幕中間
zb移動屏幕將當前行移動到屏幕下方

大小寫轉換

命令描述
~將光標下的字母改變大小寫
n~將光標位置開始的 n 個字母改變其大小寫
g~~改變當前行字母的大小寫
guu將當前行的字母全改成小寫
gUU將當前行的字母全改成大寫
guw將光標下的單詞改成小寫
gUw將光標下的單詞改成大寫
ngUU將從光標開始到下面 n 行字母改成大寫

格式化代碼

命令描述
==將光標所在行代碼格式化縮進
n==將光標所在行到下面共 n 代碼格式化縮進
gg=G將全文代碼格式化縮進
:set ai設定自動縮進
:set noai取消自動縮進
:set expandtab將 tab 轉換為 space
:set tabstop=4制表符寬度 tabstop=4 或 ts=4
:retab按照設定值重新縮進

查找替換

命令描述
: s/str/abc/將光標所在行的第一個 str 替換成 abc
:%s/str/abc/將全文中的第一個 str 替換成 abc
: s/str/abc/g將光標所在行的 str 替換成 abc
:%s/str/abc/g將全文中的 str 替換成 abc
:m,ns/str/abc/g將 m 行到 n 行中所有的 str 替換為 abc
/str向后查找 str n 查找下一個,N 查找前一個
?str向前查找 str n 查找前一個,N 查找下一個
:set hlsearch打開高亮搜索結果
:set nohlsearch關閉高亮搜索顯示

復制命令

命令描述
yy復制光標所在行
nyy復制光標所在行,到向下 n 行
y1G復制光標所在行,到第一行的所有數據
yG復制光標所在行,到最后一行的所有數據
y0復制光標所在字符,到該行行首所有數據
y^復制光標所在位置,到該行第一個非空字符之間的所有數據
y$復制光標所在字符,到該行行尾的所有數據
yw復制光標所在位置,到該單詞結束

粘貼命令

命令描述
p將復制的數據粘貼到光標的下一行
P將復制的數據粘貼到光標的上一行
np粘貼 n 次

刪除命令

命令描述
dd刪除光標所在行
ndd刪除光標所在行,到向下 n 行
d1G刪除光標所在行,到第一行的所有數據
dG刪除光標所在行,到最后一行的所有數據
d0刪除光標所在處,到該行行首
d^刪除光標所在處,到該行的最前面一個非空字符
d$刪除光標所在處,到該行的最后面一個字符
dw刪除光標所在處,到該單詞結束所有字符
dt刪除下一個雙引號之前的所有數據
x向后刪除一個字符
nx向后刪除 n 個字符
X向前刪除一個字符
ci{刪除{}里面的內容
:m,nd刪除 m 行到 n 行

修改命令

命令描述
cw修改光標所在處,到該單詞結束所有字符
r替換光標所在處字符
R從光標所在處開始替換字符,按 esc 結束

其他操作

命令描述
.重復上次操作
u撤銷上次操作
nu撤銷前 n 次操作
Ctrl + r恢復上次操作
J將光標所在行與下一行的數據結合成同一行
Ctrl + v可視化塊
Shift + v可視化行

互動板塊

  • 問:如何快捷入門 VIM?
  • 答:多敲多練,把鍵盤敲爛!

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

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

相關文章

谷歌插件之一鍵關閉同域名頁面

歡迎來到我的博客,代碼的世界里,每一行都是一個故事 🎏:你只管努力,剩下的交給時間 🏠 :小破站 谷歌插件之一鍵關閉同域名頁面 前言項目結構mainfest.jsonbackgroud.js 項目實現效果展示展望 前…

13019.CUDA問題積累

文章目錄 1 內存不斷增長的問題1.1 主機從GPU拷貝內存1.1.1 htop 內存增長到一定階段后,保持穩定 1.2 GPU拷貝到Host修改之后內存穩定無變化1.3 結論 2 主機與GPU數據拷貝方案2.1 cudaMemcpy 拷貝內存2.2 cudaMemcpyAsync 異步數據拷貝2.3 采用多線程拷貝技術2.3.1 …

群主必學!輕松Get如何解散微信群的技巧

作為一個微信群的群主,解散群聊可能是你需要掌握的重要技能之一。不管是因為群聊的目的已經達成,還是因為群成員過少或不活躍,了解如何解散微信群都能幫助你更好地管理你的群聊。 如何解散微信群?本文將為您提供一些簡單易行的技…

代碼隨想錄算法訓練營第五十天| 739. 每日溫度、496.下一個更大元素 I、503.下一個更大元素II

739. 每日溫度 題目鏈接: 739. 每日溫度 文檔講解:代碼隨想錄 狀態:不會 思路: 這道題需要找到下一個更大元素。 使用棧來存儲未找到更高溫度的下標,那么棧中的下標對應的溫度從棧底到棧頂是遞減的。這意味著&#xff…

Redis數據同步

文章簡單介紹基于redis-shake的redis數據同步,該工具基于每個節點同步數據,即每個主節點需同步一次,才能完成整個redis集群的數據同步。 1、redis節點操作 ### 查看redis版本 ./bin/redis-server --version### 登錄redis ./bin/redis-cli -…

改變Ubuntu的Tab沒有縮進4格(Makefile)

1.vim里的Tab 用vi指令打開這個文件,沒有的話就新創建一個 vi ~/.vimrc在打開的文件中輸入以下兩行 1 set tabstop42 set shiftwidth4 ~ Esc : x,保存并退出即可 資料來源: 2024年5月21日-vi/vim …

Linux Ubuntu MySQL環境安裝

1. 更新軟件源 首先,確保你的Ubuntu系統已經更新了軟件源列表,以便能夠下載到最新的軟件包。打開終端并輸入以下命令: sudo apt update 2. 安裝MySQL服務器 打開終端并輸入以下命令來安裝MySQL服務器 sudo apt install mysql-server 在…

一個便捷的web截圖庫~【送源碼】

隨著時間的發展,前端開發的范圍越來越廣,能夠實現的功能也越來越多,要實現的功能也五花八門,今天就給大家介紹一個web截圖庫,讓前端也能實現截圖功能—— js-web-screen-shot js-web-screen-shot js-web-screen-shot 是一個基于 …

嵌入式板級支持包(BSP)80道面試題及參考答案(3萬字長文)

目錄 解釋什么是通用輸入輸出(GPIO)接口及其在BSP中的作用。 描述SPI接口的主要特點和用途。 說明IC總線協議的工作原理。 如何在BSP中配置一個UART接口? USB設備控制器在BSP中的初始化步驟是什么? 以太網接口如何在BSP中被支持? 什么是SDIO,它在哪些場景下會被使…

語言模型演進:從NLP到LLM的跨越之旅

在人工智能的浩瀚宇宙中,自然語言處理(NLP)一直是一個充滿挑戰和機遇的領域。隨著技術的發展,我們見證了從傳統規則到統計機器學習,再到深度學習和預訓練模型的演進。如今,我們站在了大型語言模型&#xff…

【接口設計】如何設計統一 RESTful 風格的數據接口

如何設計統一 RESTful 風格的數據接口 1.版本控制1.1 通過 URL1.2 通過自定義請求頭1.3 通過 Accept 標頭 2.過濾信息3.確定 HTTP 的方法4.確定 HTTP 的返回狀態5.定義統一返回的格式 近年來,隨著移動互聯網的發展,各種類型的客戶端層出不窮。如果不統一…

Mybatis-Plus最優化持久層開發

Mybatis-plus:最優化持久層開發 一:Mybatis-plus快速入門: 1.1:簡介: Mybatis-plus(簡稱MP)是一個Mybatis的增強工具,在mybatis的基礎上只做增強不做改變; 提高效率;自…

國漫推薦11

1.《元龍》 2.《惡魔法則》2023年9月29日 3.《三十六騎》 4.《山河劍心》 5.劍網3俠肝義膽沈劍心 《劍網3俠肝義膽沈劍心》 《劍網3俠肝義膽沈劍心 第二季》 《劍網3俠肝義膽沈劍心之長漂》(番外) 《劍網3俠肝義膽沈劍心 第三季》 6.《仙逆》東方玄幻…

Uniswap V2和Uniswap V3的區別

Uniswap V2和Uniswap V3是兩個不同版本的去中心化交易協議,由Uniswap團隊開發和維護。它們之間的主要區別包括以下幾點: 資金池模型不同: Uniswap V2: 使用恒定乘積市場模型,也就是 x * y k。這意味著每個資金池中的資產的乘積保持不變&…

Transformer的模型的擴展與應用領域的拓展 - Transformer教程

在如今的人工智能領域,Transformer模型已經成為了眾多研究和應用的焦點。從自然語言處理到計算機視覺,Transformer模型的擴展與應用領域的拓展帶來了無數的可能性。今天,我們就來聊聊Transformer模型的擴展以及它在不同領域的廣泛應用。 首先…

生產管理系統功能全拆解:哪些功能是企業真正需要的?

制造業的伙伴經常聽到“生產管理”,但很多人可能只是模糊地知道它與工廠、生產線有關。那么,到底什么是生產管理呢?它的重要性又體現在哪里呢?接下來,我就以輕松的方式,帶大家走進生產管理的世界&#xff0…

函數練習·二 基礎題

# 【以下功能都使用函數封裝】 # 提示: 涉及到要返回的題目,請使用return # 基礎題 # 1.封裝函數,計算從1到某個數以內所有奇數的和并返回 def fn1(n): return sum([i for i in range(1, n, 2)]) print(fn1(7)) # 2.封裝函數,判斷某個數是否是偶…

微信閃退怎么回事?實用技巧助你輕松應對

在使用微信的過程中,偶爾會遇到閃退的問題,這不僅影響我們的日常溝通,還可能導致重要信息的丟失。那么,微信閃退怎么回事呢?閃退的原因可能有很多,包括軟件問題、手機存儲不足、系統不兼容等。本文將詳細分…

筆記本電腦數據丟失如何恢復?

在計算機網絡日益普及的今天,計算機已波及到人們的生活、工作、學習及消費等廣泛領域,其服務和管理也涉及政府、工商、金融及用戶等諸多方面。筆記本電腦等電子產品被各行各業的人所喜愛和接受,早已成為人們出差的必備品,可以用來…

keepalived高可用集群

一、keepalived: 1.keepalive是lvs集群中的高可用架構,只是針對調度器的高可用,基于vrrp來實現調度器的主和備,也就是高可用的HA架構;設置一臺主調度器和一臺備調度器,在主調度器正常工作的時候&#xff0…