Linux Vim 編輯器使用指南

Linux Vim 編輯器使用指南

在這里插入圖片描述

一、Vim 簡介

Vim(Vi IMproved)是 Linux/Unix 系統中最流行的文本編輯器之一,它是 Vi 的增強版,支持多模式操作、語法高亮、插件擴展等特性,無需鼠標即可高效編輯文本。

二、核心工作模式

Vim 有四種主要模式,通過不同按鍵快速切換:

  1. 命令模式(Normal Mode):

    ? 默認模式,用于導航、執行命令和切換到其他模式。

    ? 進入方式:啟動 Vim 后直接進入;從其他模式按 Esc或 Ctrl+[ 返回。

  2. 輸入模式(Insert Mode):

    ? 用于編輯文本,類似常規編輯器。

    ? 進入方式:在命令模式下按 i(光標前插入)、a(光標后插入)、o(下一行插入)、O(上一行插 入)等。

    ? 退出方式:按ESC返回命令模式

  3. 末行模式(Command-Line Mode)

    ? 用于執行文件操作、搜索替換、配置等命令。

    ? 進入方式:在命令模式下按 :(冒號)。

    ? 退出方式:執行命令后自動退出或按 Esc

  4. 可視模式(Visual Mode)

    ? 用于選擇文本塊,支持字符、行、塊三種選擇方式。

    ? 進入方式:在命令模式下按 v(字符)、V(行)或 Ctrl+v(塊)。

三、Vim編輯器常用命令與快捷鍵

1. 文件操作

# 啟動Vim并打開文件
vim filename.txt          # 打開文件
vim -o file1 file2        # 水平分屏打開多個文件
vim -O file1 file2        # 垂直分屏打開多個文件# 末行模式命令(需先按冒號:)
:w                      # 保存文件
:w filename             # 另存為
:q                      # 退出
:wq / :x                # 保存并退出
:wq!                   # 強制保存退出
:q!                     # 強制退出(不保存)
:e filename             # 打開新文件
:bn / :bp               # 切換到下一個/上一個文件(多文件編輯時)

2. 光標移動

# 基本移動(命令模式)
h/j/k/l                 # 左/下/上/右(推薦用方向鍵替代)
w / b                   # 跳到下一個/上一個單詞開頭
e                       # 跳到單詞末尾
0 / ^                   # 行首(0到第一個字符,^到非空白字符)
$                       # 行尾
gg / G                  # 文檔開頭/結尾
5G                      # 跳到第5行(數字+G)
Ctrl+f / Ctrl+b         # 下翻頁/上翻頁
Ctrl+d / Ctrl+u         # 下翻半頁/上翻半頁

3. 文本編輯

# 插入模式(命令模式下按以下鍵進入)
i                       # 在光標前插入
a                       # 在光標后插入
I                       # 在行首插入
A                       # 在行尾插入
o / O                   # 在當前行下方/上方插入新行
s / S                   # 刪除當前字符/整行并進入插入模式# 刪除與修改
x                       # 刪除當前字符(等同于Delete)
dd                      # 刪除當前行
3dd                     # 刪除當前行及以下3行
d$                      # 刪除從光標到行尾的內容
d^                      # 刪除從光標到行首的內容(不包含光標字符)
dw                      # 刪除一個單詞
u                       # 撤銷上一步操作
Ctrl+r                  # 恢復撤銷(重做)

4. 復制粘貼

yy                      # 復制當前行
5yy                     # 復制當前行及以下5行
yw                      # 復制一個單詞
p / P                   # 在光標后/前粘貼(小寫p貼到下一行,大寫P貼到上一行)
"ayy                   # 將當前行復制到寄存器a(可指定a-z任意寄存器)
"ap                    # 從寄存器a粘貼內容

5.查找與替換

# 查找(命令模式下)
/keyword                # 向下查找keyword
?keyword                # 向上查找keyword
n / N                   # 下一個/上一個匹配項(按查找方向)
:nohlsearch             # 取消高亮顯示(可簡寫為:noh)# 替換(末行模式下)
:%s/old/new/g           # 全局替換(%表示全文,g表示替換所有匹配項)
:%s/old/new/gc          # 全局替換,每次替換前詢問(c表示confirm)
:1,10s/old/new/g        # 替換第1-10行的匹配項

6. 可視模式操作

v                       # 進入字符可視模式(按字符選擇)
V                       # 進入行可視模式(整行選擇)
Ctrl+v                  # 進入塊可視模式(矩形區域選擇)
# 選中后可執行:
d                       # 刪除選中內容
y                       # 復制選中內容
p                       # 粘貼到光標位置

7. 多窗口操作

# 分屏(末行模式)
:split                  # 水平分屏
:vsplit                 # 垂直分屏
:split filename         # 分屏并打開新文件# 窗口切換(命令模式)
Ctrl+w w                # 循環切換窗口
Ctrl+w h/j/k/l          # 切換到左/下/上/右窗口
Ctrl+w q                # 關閉當前窗口

8. 寄存器與宏

"ayy                   # 將當前行復制到寄存器a
"ap                    # 從寄存器a粘貼
:registers              # 查看所有寄存器內容# 錄制宏
qa                      # 開始錄制宏到寄存器a
# 執行一系列操作(如yy,p,j等)
q                       # 停止錄制
@a                      # 執行宏a
10@a                    # 重復執行宏a 10次

9. 標記與書簽

ma                      # 在當前位置設置標記a(a-z為局部標記,A-Z為全局標記)
`a                      # 跳轉到標記a的位置
''                      # 跳轉到上次編輯位置

10. 配置文件(~/.vimrc)

創建或編輯 ~/.vimrc 文件可自定義 Vim 配置:

set number              # 顯示行號
set relativenumber      # 顯示相對行號
set tabstop=4           # Tab寬度為4個空格
set shiftwidth=4        # 自動縮進寬度為4個空格
set expandtab           # 將Tab轉換為空格
set autoindent          # 自動縮進
syntax on               # 語法高亮
set cursorline          # 高亮當前行
set mouse=a             # 啟用鼠標支持

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

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

相關文章

運維筆記:破解 VMware 遷移難題

一、VMware 遷移前的準備與評估1.1 遷移場景與目標分析VMware 遷移常見場景包括:同平臺升級:從 vSphere 6.7 遷移到 7.0/8.0(硬件兼容、功能迭代)跨平臺遷移:VMware→KVM/Xen(降低 licensing 成本&#xff…

cartographer 點云數據的預處理

目錄 傳感器數據的走向 體素濾波與之后的處理 3D情況下的激光雷達數據的預處理 初始位姿估計 位姿推測器的優缺點分析與總結 可能有問題的點 可能的改進建議 傳感器數據的走向 傳感器數據從CollatedTrajectoryBuilder類的HandleCollatedSensorData函數 傳遞GlobalTrajec…

基于數據挖掘的短視頻點贊影響因素分析【LightGBM、XGBoost、隨機森林、smote】

文章目錄有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主項目介紹總結每文一語有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主 項目介紹 隨著短視頻行業的高速發展,尤其是以抖音為代表的平臺不斷壯大&…

Git 從入門到精通

Git 從入門到精通 涵蓋了核心概念、常用命令、協作流程和高級技巧: 核心理念: 版本控制: 記錄文件變化歷史,可回溯到任意版本。分布式: 每個開發者擁有完整的倉庫副本(包括完整歷史)&#xf…

UE5多人MOBA+GAS 30、技能升級機制

文章目錄前言技能的升級修改一下按鍵的輸入判斷是否滿級在ASC中升級技能由角色的輸入調用ASC的升級功能技能圖標的優化技能升級材質,可升級技能圖標的閃爍刷新技能升級后的藍耗和CD,以及藍不夠時技能進入灰色狀態修復傷害數字特效只顯示3位數的問題前言 …

筆試——Day22

文章目錄第一題題目思路代碼第二題題目:思路代碼第三題題目:思路代碼第一題 題目 添加字符 思路 枚舉所有字符串a與字符串b相對應的位置 代碼 第二題 題目: 數組變換 思路 貪心 以最大值為基準元素,判斷其他元素能否變為最…

__getattr__和 __getattribute__ 的用法

1、__getattr__ 的用法當實例對象訪問一個不存在的屬性時,會執行 __getattr__ 方法,如果屬性存在的話,就不會執行案例 class Person:def __init__(self, name, age):self.name nameself.age agedef get_info(self):return f"name: {se…

信息化項目驗收測試實戰指南

在當今數字化轉型的大背景下,信息化項目驗收建設已成為企業提升運營效率、優化管理流程的重要手段。然而,很多企業在投入大量資金建設信息系統后,卻常常面臨系統上線后無法滿足實際業務需求的困境。究其原因,往往是由于忽視了信息…

牛頓拉夫遜法PQ分解法計算潮流MATLAB程序計算模型。

牛頓拉夫遜法&PQ分解法計算潮流MATLAB程序計算模型。本程序模型基于MATLAB進行潮流計算,建議先安裝matpower插件(MATLAB中非常重要的潮流計算的插件)。本程序可進行牛拉法和PQ分解法潮流計算的切換,對比潮流計算的結果。很適合…

Go語言實戰案例-計算字符串編輯距離

在自然語言處理、拼寫糾錯、模糊搜索等場景中,我們經常需要衡量兩個字符串之間的相似度。編輯距離(Edit Distance) 就是一個經典的衡量方式,它描述了將一個字符串轉換為另一個字符串所需的最少操作次數。 一、問題定義:什么是編輯距離? 編輯距離,也稱為 Levenshtein Di…

Java時間與日期常用方法

DateDate date new Date(); //獲取當前時間 System.out.println(date.getYear() 1900); // 必須加上1900 System.out.println(date.getMonth() 1); // 0~11,必須加上1 System.out.println(date.getDate()); // 1~31,不能加1Ca…

【MySQL】從連接數據庫開始:JDBC 編程入門指南

個人主頁:?喜歡做夢 歡迎 👍點贊 ?關注 ??收藏 💬評論 目錄 🌟一、什么是JDBC? 🌟二、JDBC編程的步驟 ?使用步驟 ?DriverManger 💫定義 💫DriverManger的主要功能 …

重生之我在暑假學習微服務第一天《MybatisPlus-上篇》

本系列參考黑馬程序員微服務課程,有興趣的可以去查看相關視頻,本系列內容采用漸進式方式講解微服務核心概念與實踐方法,每日更新確保知識點的連貫性。通過系統化學習路徑幫助開發者掌握分布式系統構建的關鍵技術。讀者可通過平臺訂閱功能獲取…

odoo-060 git版本:發布/生產版本落后開發版本部署

文章目錄問題起源目前解決問題起源 周五提交了一個版本,本來打算使用這個版本的,周末更新。 下一個功能比較復雜,周一提交,結果周末沒有更新,導致現在還有沒測試過的不能發布的。 說明: 原來只有一個mast…

YotoR模型:Transformer與YOLO新結合,打造“又快又準”的目標檢測模型

【導讀】在目標檢測領域,YOLO系列以其高效的推理速度廣受歡迎,而Transformer結構則在精度上展現出強大潛力。如何兼顧二者優勢,打造一個“又快又準”的模型,是近年來研究熱點之一。本文介紹的一項新研究——YotoR(You …

白楊SEO:流量的本質是打開率?搞用戶搜索流量的玩法怎么做?

大家好,我是白楊SEO,專注研究SEO十年以上,全網SEO流量實戰派,AI搜索優化研究者。上周六參加了生財航海家在杭州舉行的私域運營大會,主題是圍繞私域獲客,私域IP,AI私域,精細化管理。白…

Java優雅使用Spring Boot+MQTT推送與訂閱

在物聯網(IoT)和智能設備橫行的今天,你有沒有遇到這樣的問題:服務端需要實時把報警、狀態更新、控制指令推送給客戶端;安卓 App、嵌入式設備、網頁等終端,需要輕量且穩定的連接方式;HTTP 太“重…

多目標粒子群優化(MOPSO)解決ZDT1問題

前言 提醒: 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。 其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展…

Coze Studio概覽(三)--智能體管理

本文簡要分析了Coze Studio中智能體管理功能,包括功能、架構以及核心流程。Coze Studio 智能體管理功能分析 1. 智能體管理架構概覽 Coze Studio的智能體管理系統基于DDD架構,主要包含以下核心模塊: 后端架構層次: API層 (coze): …

idea運行tomcat日志亂碼問題

原因在于idea和tomcat文件編碼格式不一樣。可以把idea編碼改成UTF-8 File | Settings | Editor | File Encodings 里面把GBK都改成UTF-8help里面 Edit Custom VM Options 添加一行-Dfile.encodingUTF-8重啟idea