CRUD之linux的文本编辑之王VIM

1 简介

增删改查操作

Vim 是一款功能强大的文本编辑器,以其高效的键盘操作和模式切换著称。掌握 Vim 的核心操作(增、删、改、查)可以极大提升编辑效率。下面详细介绍 Vim 的常见用法。

  • Vim 的基本模式

Vim 有多个模式,不同模式下按键功能不同:

css 复制代码
  普通模式(Normal Mode):默认模式,用于导航和命令执行(按 Esc 返回)。

  插入模式(Insert Mode):用于输入文本(按 i、a、o 等进入)。

  可视模式(Visual Mode):用于选择文本(按 v 进入)。

  命令模式(Command Mode):用于执行命令(按 : 进入)。

2. 基本增删改查操作

  • 2.1 插入文本(增)

在普通模式下,进入插入模式的方式:

css 复制代码
	命令	功能

  i		在光标前插入
  a		在光标后插入
  I		在行首插入
  A		在行尾插入
  o		在当前行下方插入新行
  O		在当前行上方插入新行

示例:

在光标前输入:i → 进入插入模式 → 输入内容 → Esc 退出。

在行尾添加:A → 输入内容 → Esc。

  • 2.2 删除文本(删)

在普通模式下删除文本:

bash 复制代码
命令		功能
x			删除光标所在字符
X			删除光标前一个字符
dd			删除当前行
dw			删除当前单词
d$ 或 D		删除到行尾
d^			删除到行首
dG			删除到文件末尾
dgg			删除到文件开头
	5dd			删除 5 行

示例:

删除当前行:dd

删除 3 行:3dd

删除到行尾:d$

  • 2.3 修改文本(改)

Vim 的修改操作通常结合删除和插入:

复制代码
  命令			功能
  r				替换单个字符(如 rx 替换为 x)
  R				进入替换模式(覆盖输入)
  cw				修改当前单词(删除并进入插入模式)
  cc			修改整行
  C				修改到行尾
  s					删除当前字符并进入插入模式
  S				删除整行并进入插入模式

示例:

修改单词:cw → 输入新内容 → Esc

替换字符:r + 新字符(如 ra 替换为 a)

  • 2.4 查找文本(查)

在普通模式下查找:

ruby 复制代码
命令			功能
/keyword	向下查找 keyword
?keyword	向上查找 keyword
n			跳转到下一个匹配项
N			跳转到上一个匹配项
*			查找当前光标下的单词(向下)
#			查找当前光标下的单词(向上)
:set hlsearch	高亮所有匹配项
:nohlsearch		取消高亮

示例:

查找 hello:/hello → Enter → n 下一个匹配项。

查找当前单词:*(向下)或 #(向上)。

3. 高级操作

  • 3.1 复制、粘贴、撤销

    css 复制代码
     命令	功能
     yy	复制当前行
     yw	复制当前单词
     p	粘贴到光标后
     P	粘贴到光标前
     u	撤销操作
     Ctrl + r	重做操作

示例:

复制 3 行:3yy → 移动光标 → p 粘贴。

撤销操作:u,重做:Ctrl + r。

  • 3.2 移动光标

    css 复制代码
    命令	功能
    h j k l	左、下、上、右
    w	跳到下一个单词开头
    b	跳到上一个单词开头
    0	跳到行首
    $	跳到行尾
    gg	跳到文件开头
    G	跳到文件末尾
    50G	跳到第 50 行
    Ctrl + f	向下翻页
    Ctrl + b	向上翻页

示例:

跳转到第 10 行::10 或 10G

跳到行尾:$

  • 3.3 替换文本

    ruby 复制代码
    命令	功能
    :%s/old/new/g	全局替换 old 为 new
    :%s/old/new/gc	替换时确认
    :10,20s/old/new/g	替换 10-20 行的 old

示例:

替换所有 foo 为 bar::%s/foo/bar/g

仅替换 5-15 行的 test::5,15s/test/new/g

4 实例:

Vim 编辑器替换文件中的 localhost 为 192.168.1.112,可以按照以下步骤操作:

  • 方法 1:基本替换命令

用 Vim 打开文件:

vim 文件名 进入命令模式(如果刚打开 Vim,按 Esc 确保在普通模式)。

输入以下替换命令(注意 %s 表示全局替换):

ruby 复制代码
  :%s/localhost/192.168.1.112/g
  

%s:对整个文件进行操作

bash 复制代码
/localhost/192.168.1.112/:将 localhost 替换为 192.168.1.112

g:替换所有匹配项(而不仅仅是每行的第一个)

按 Enter 执行替换。

保存并退出:

markdown 复制代码
		:wq
        
  • 方法 2:确认后替换(更安全)

如果希望每次替换前确认,可以添加 c 标志:

ruby 复制代码
	:%s/localhost/192.168.1.112/gc

Vim 会逐个提示是否替换,按 y 确认替换,n 跳过。

  • 方法 3:仅替换特定行

如果只想替换 10 到 20 行之间的内容:

bash 复制代码
	:10,20s/localhost/192.168.1.112/g

注意事项 如果 localhost 是单词的一部分(如 mylocalhost),添加单词边界匹配:

ruby 复制代码
		:%s/\<localhost\>/192.168.1.112/g

替换后建议用 :w 先保存,确认无误后再 :q 退出。

如果想撤销替换,在命令模式按 u(撤销)。

查看替换结果但不保存:

ruby 复制代码
	:%s/localhost/192.168.1.112/gn

(n 会报告匹配数量但不实际替换)

5. 总结

插入:i、a、o、I、A、O

删除:x、dd、dw、d$、dG

修改:r、R、cw、cc、C

查找:/keyword、?keyword、n、N、*、#

复制粘贴:yy、p、P、u、Ctrl + r

保存与退出

ruby 复制代码
  命令	功能
  :w	保存文件
  :wq 或 ZZ	保存并退出
  :q!	强制退出(不保存)
  :w newfile.txt	另存为新文件
  :e filename	打开另一个文件

移动:h j k l、w b、gg G、0 $

替换::%s/old/new/g

保存退出::w、:wq、:q!

相关推荐
ServBay35 分钟前
打通 AI 编程本地运维边界,利用 MCP 协议简化环境与服务管理
后端·ai编程·mcp
程序员cxuan36 分钟前
DeepSeek 杀入多模态,识图功能正式上线!
人工智能·后端·程序员
IT_陈寒3 小时前
SpringBoot这个自动配置坑我跳了三次
前端·人工智能·后端
用户395240998804 小时前
排坑日记:ASP.NET Core 中 "Required field is not provided" 验证错误全记录
后端
用户8356290780515 小时前
使用 Python 自动化 PowerPoint 形状布局与格式设置
后端·python
AlfredZhao5 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
Oneslide5 小时前
sudo免密权限配置不生效
后端
站大爷IP6 小时前
为什么Python不用var或let声明变量?
后端
赴星半途6 小时前
NestJS实战-创建AuthService
后端