Linux 实战技巧 --vi/vim 的使用
Vi 的使用
vi 是一个强大的文本编译器。它可以通过不同模式的切换,使用户可以不用鼠标,通过键盘完成对所有文本的操控。
vi 的四种模式:
- 正常模式(Normal-model)
- 插入模式(Insert-model)
- 命令模式(Command-model)
- 可视模式(Visual-model)
命令行输入 vi
,会进入vim
文本编译器的版本,vim
是对 原始 vi
编译器的扩展。可以用命令 man vi
获取到相应的帮助。可以在终端输入 vim
进入其主界面。
vi
man vi
vim
vim 的正常模式
光标移动按键:
按键 | 含义 |
---|---|
l or 右箭头 | 向右移动一个字符 |
h or 左箭头 | 向 左 移动一个字符 |
j or 下箭头 | 向 下 移动一个字符 |
k or 上箭头 | 向 上 移动一个字符 |
0(零按键) | 移动到当前行的行首 |
$ | 移动到当前行的行尾 |
^ | 移动到当前行的第一个非空字符 |
w | 移动到下一个单词或标点符号的开头 |
W | 移动到下一个单词的开头(忽略标点符号) |
b | 移动到上一个单词或标点符号的开头 |
B | 移动到上一个单词的开头(忽略标点符号) |
Ctrl + f or Page Down | 向下翻一页 |
Ctrl + b or Page Up | 向上翻一页 |
numberG | 移动到第 number 行(例:1G 表示移动到文件的第一行) |
G | 移动到文件末尾 |
vi 中的许多命令都可以在前面加上一个数字,比如上面的 G
命令。在命令之前加上一个数字,就可以指定命令执行的次数。例:命令 5j
表示将光标下移 5 行。
复制、剪切和粘贴
y
命令用来复制文本,可以将 y
命令和各种光标移动命令结合起来使用:
命令 | 复制的内容 |
---|---|
yy | 当前行 |
5yy | 当前行及随后的四行文本(数字表示从当前行开始复制的行数) |
y0 | 从当前光标位置到 行首 |
y$ | 从当前光标位置到 行尾 |
y^ | 从当前光标位置到文本行的第一个非空字符 |
yW | 从当前光标位置到下一个单词的开头 |
yG | 从当前行到文件末尾 |
y20G | 从当前行到文件的第 20 行(数字可以根据自己需求设置) |
d
命令用来剪切文本,用法和 y
命令类似
p
命令用来粘贴文本。
- 小
p
命令把剪切板中的文本粘贴到光标位置之后 - 大
P
命令把剪切板中的文本粘贴到光标位置之前
删除文本
用 x
和 d
命令来删除字符。 x
按键会删除光标位置的一个字符。d 按键更通用一些。
命令 | 删除的文本 |
---|---|
x | 当前字符 |
3x | 当前字符及其后的两个字符 |
dd | 当前行 |
5dd | 当前行及随后的四行文本 |
d0 | 从光标位置开始到当前行的行首 |
d$ | 从光标位置开始到当前行的行尾 |
d^ | 从光标位置开始到文本行的第一个非空字符 |
dW | 从光标位置开始到下一个单词的开头 |
dG | 从当前行到文件末尾 |
d20G | 从当前行到文件的第 20 行 |
撤销与重做
- 撤销(后退):
u
- 重做(前进):
Ctrl + r
vim 的插入模式
进入插入模式的几种方式:
命令 | 含义 |
---|---|
i | 进入插入模式,光标位置不变 |
I | 进入插入模式,光标来到原来光标所在行的开头位置 |
a | 进入插入模式,光标来到原来光标的下一位置 |
A | 进入插入模式,光标来到原来光标所在行的结尾位置 |
o | 进入插入模式,光标来到原来光标位置的下一行,原来下面的行依次下移 |
O | 进入插入模式,光标来到原来光标位置的上一行,原来下面的行依次下移 |
按 Esc
键退出插入模式。
vim 的命令模式
保存与退出
保存:
:w <文件名>
。例::w /home/a.txt
退出:
- 退出:
:q
- 保存并退出:
:wq
- 不保存退出:
:q!
- 退出:
执行 Linux 命令
在文本编辑的同时,想临时执行 linux 命令,可执行代码::! <命令>
。例:查看 IP 地址::!ifconfig
查找与替换
查找
- 查找一行:
f
。例:fa
表示在当前行查找字符a
- 查找整个文件:
/
。 例:/a
表示在全文查找字符a
。如果查到的字符有多个,可以按n
来查找下一个匹配的字符;shift + n
用来查找上一个匹配的字符。
- 查找一行:
替换
命令:
:%s/<被替换字符>/<替换成字符>/gc
。对该命令的分解如下:条目 含义 : 冒号字符运行一个 ex 命令 % 指定要操作的行数。%是一个快捷方式,表示从第一行到最后一行。1,5 表示从第一个行到第五行,如果省略文本行的范围,那么操作只对当前行生效。 s 指定命令,这里是:替换(查找与替换) /<被替换字符>/<替换成字符> 查找类型与替换文本 g 全局。对文本行中所有匹配的字符串执行查找和替换操作。如果省略 g,则只替换每个文本行中第一个匹配的字符串 c 替换确认。在执行每个替换命令之前,vi 会停下来,通过信息(replace with <替换文本> (y/n/a/q/l/E/Y)?)来要求我们确认这个替换 例:
:s/x/a
:表示对光标所在行,把x
替换成a
:%s/x/a
: 表示对全文,把x
替换成a
:3,5s/x/a
:表示对第 3 到 5 行,把x
替换成a
:s/x/a/g
:表示对全局,把x
替换成a
替换确认按键如下:
按键 行为 y 执行替换操作 n 跳过当前匹配的实例 a 对当前及随后所有匹配的字符串执行替换操作 q or Esc 退出替换操作 l 执行这次替换并退出 Ctrl+e, Ctrl+y 分别是向下滚动和向上滚动。用于查看建议替换的上下文
显示行号
显示行号:
:set nu
取消显示行号:
:set nonu
上述命令只能对单次修改生效,当退出再次打开时,恢复原来状态。如果想长期生效,需要修改 vim 的配置文件。
- 打开 vim 配置文件。执行命令
vim /etc/vimrc
- 把
set nu
写入到配置文件最后一行,并保存。
- 打开 vim 配置文件。执行命令
vim 的可视模式
可视模式主要是用于对重复的大量操作,可以一次性执行完成的一种功能。进入可视模式的三种方式:
命令 | 行为 |
---|---|
v | 字符可视模式 |
V | 行可视模式 |
Ctrl+v |
块可视模式(配合 d 和I 命令可以进行块的便捷操作)
|
I
在当前块的前面插入内容。
d
删除当前的块。
Linux 实战技巧 --vi/vim 的使用相关推荐
- linux系统中vi/vim文本编辑器的使用简介
linux系统中vi/vim文本编辑器的使用简介 1. vi/vim简介 vi/vim 是linux系统中最基本的编辑器,类似于windows系统中的记事本,几乎所有的linux开发版本都内置了v ...
- Linux入门教程——VI/VIM 编辑器
前言 本文小新为大家带来 Linux入门教程--VI/VIM 编辑器 相关知识,具体内容包括VI/VIM是什么,VIM的三种工作模式介绍,包括:一般模式,编辑模式,指令模式,以及模式间转换等进行详尽介 ...
- Linux 实战技巧
常用命令 adduser # 以创建 Apache Eagle 用户为例 $ adduser eagle $ passwd eagle # ur password for eagle user # 赋 ...
- linux的命令vim,Linux命令:vi | vim命令
vim - vi 增强版.文本编辑器 格式:vim [options] [file ..] 说明:如果file存在,文件被打开并显示内容,如果文件不存在,当编辑后第一次存盘时创建它 [options] ...
- linux 普通用户退出vim,Linux环境下VI/VIM编辑文件时无权限保存的解决方法(普通用户)...
在Linux环境下,如果直接使用VI/VIM命令编辑没有修改权限的文件时,保存的时候就会提示用户无法进行保存操作,一般的解决方法只能是关闭文件重新以sudo权限打开该文件编辑后再保存(前提是用户具有s ...
- Linux 中去除 vi/vim 和 git diff 中的 ^M 问题解决办法
去除 vi/vim 和 git diff 中的 ^M 问题解决办法 问题现象 初步分析 进一步查看 问题解决 Source Insight dos2unix Nodpad++ Vim sed 命令 综 ...
- Linux下编辑器vi/vim的使用介绍
vi编辑器是所有Unix及Linux系统下标准的编辑器.对Unix及Linux系统的任何版本,vi编辑器是完全相同的. 基本上vi可以分为三种状态,分别是命令模式(commandmode).插入模式( ...
- linux里的vi/vim编辑器怎么用
关于VIM Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.Vim是从 vi 发展出来的一个文本编辑器.代码补全.编译及错误跳转等方便编程的功能特别 ...
- linux vi打不开文件,在Linux中使用vi/vim打开一个文件时出现的的问题
1.想想如何vim/etc/profile会出现这种情况,并解决掉这些问题 图一: 图二: 原因: 第一张:由于vi /etc/profile还没有编辑完成,保存退出,突然断电或其他原因导致编辑窗口关 ...
最新文章
- 通俗易懂!使用Excel和TF实现Transformer
- 如何显示服务器上的图片,显示服务器上的图片怎么写
- 我是这样用extern的...
- js 利用事件委托解决mousedown中的click
- socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
- ENVI标准库下光谱分析
- 设计模式学习02:简单工厂模式、工厂模式以及抽象工厂模式(具体)
- 云-腾讯云-云点播:云点播(VOD)
- vue-socket.io 对IE浏览器(IE10+)的兼容性修复
- Spring框架 教程
- 计算机模拟题操作题错误,计算机模拟试卷操作题答案.doc
- libyuv 海思平台编译测试
- linux CFI接口,Linux系统下的MTD/CFI驱动介绍
- 常见的编程语言的特点与应用领域浅谈
- 支付宝资金预授权怎么开通详解,芝麻信用免押接口开通,免押领取/免押金租赁设备!
- 平面设计的概念是什么,如何理解平面设计的概念
- 【分治算法-02】算法经典问题
- AnnotationConfigApplicationContext@xxxx has not been refreshed yet
- 职业生涯发展理论(精)
- layui图标拓展-自定义图标