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!

相关推荐
钟离墨笺25 分钟前
Go语言学习-->从零开始搭建环境
开发语言·后端·学习·golang
m0_746177192 小时前
小白畅通Linux之旅-----Linux日志管理
linux·运维·服务器
菜菜笔记4 小时前
Ubuntu 挂载新盘
linux·运维·ubuntu
慌糖5 小时前
Ubuntu安装Docker命令清单(以20.04为例)
linux·ubuntu·docker
zhangzhiwei-zzw5 小时前
Linux下使用nmcli连接网络
linux·网络·chrome
烛阴5 小时前
自动化测试、前后端mock数据量产利器:Chance.js深度教程
前端·javascript·后端
ZZH1120KQ6 小时前
Linux账号和权限管理
linux·运维
.生产的驴6 小时前
SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入
java·分布式·后端·spring·spring cloud·信息可视化·tomcat
攒了一袋星辰6 小时前
Spring @Autowired自动装配的实现机制
java·后端·spring
XMAIPC_Robot6 小时前
基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代
linux·数码相机·fpga开发·架构·边缘计算