VIM 文本编辑器
VIM 文本编辑器
VIM 介绍
#安装 VIM
[root@node-01 ~]# yum install -y vim-enhanced
vim/vi 是 Unix / Linux 上最常用的文本编辑器而且功能非常强大。
特点:只有命令,没有菜单
《大碗》编辑器版
周围的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:酷!你说这么牛X的一东西,怎么着学会也得小半年吧。半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!
VIM 工作模式
命令模式(又称一般模式)
用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 vim 识别为命令,而非输入字符。
比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符
- x 删除当前光标所在处的字符
- : 切换到底线命令模式,以在最底一行输入命令
若想要编辑文本:启动 vim,进入了命令模式,按下 i,切换到输入模式
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
输入模式(又称编辑模式)
在命令模式下按下 i 就进入了输入模式
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式(又称命令行模式)
在命令模式下按下:(英文冒号)就进入了底线命令模式
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按 ESC 键可随时退出底线命令模式
VIM 常用命令
插入命令
命令 | 作用 |
---|---|
a | 在光标后附加文本 |
A(shift + a) | 在本行行末附加文本 行尾 |
i | 在光标前插入文本 |
I(shift+i) | 在本行开始插入文本 行首 |
o | 在光标下插入新行 |
O(shift+o) | 在光标上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg G | 到第一行 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:w >> a.txt | 内容追加到a.txt文件中 文件需存在 |
:wq | 保存修改并退出 |
shift+zz(ZZ) | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 保存修改并退出(文件所有者可忽略文件的只读属性) |
不保存并退出:
有修改,但是修改后的内容是不保存的
有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 nx 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
:n1,n2d | 删除指定范围的行(eg :1,3d 删除了123这三行) |
dG | 删除光标所在行到末尾的内容 |
D | 删除从光标所在处到行尾 |
复制和剪切命令
命令 | 作用 |
---|---|
yy、Y | 复制当前行 |
nyy、nY | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下 或行上 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R(shift + r) | 从光标所在处开始替换字符,按Esc结束 |
u | undo,取消上一步操作 |
ctrl+r | redo,返回到undo之前 |
搜索和替换命令
命令 | 作用 |
---|---|
:/string | 向后搜索指定字符串 搜索时忽略大小写 :set ic |
:?string | 向前搜索指定字符串 |
n | 搜索字符串的下一个出现位置,与搜索顺序相同 |
N(Shift + n) | 搜索字符串的上一个出现位置,与搜索顺序相反 |
:%s/old/new/g | 全文替换指定字符串 (% 指全文,s 指开始,g 指全局替换) |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
起始行,终止行 s/ 要替换的字符串/替换的新的字符串 /g c 询问确认
eg: :%s/ftp/yang/g 全局替换,把ftp替换为yang
eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换
eg: :41,44/yang/lee/g 同上,不询问,直接替换
eg: :%s//root//ROOT/g 把/root替换为/ROOT
eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替换为/bin/ksh
使用替换命令来添加删除注释
:% s/^/#/g 来在全部内容的行首添加 # 号注释
:1,10 s/^/#/g 在1~10 行首添加 # 号注释
vi里面怎么查命令??
:!which cp
vi里面怎么导入命令的结果?
:r !which cp
可视化模式
- v (可视字符模式)
- V(shift+v) (可视行模式,选择多行操作)
- ctrl+v (可视块模式或列模式,用于操作列)
- I 或者 O (进入插入模式)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现