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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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