vi 编辑器笔记
摘要:
vi从安装到使用
vi从菜鸟到高手
0、 vim - Vi IMproved, a programmers text editor
分为 VI和VIM,现在流行的发行版里面VI=VIM
是一个文本编辑器(所有没有图片的文本,纯文本内容,无视后缀名)
不能编辑二进制文件
不能编辑目录
Debian系安装vim的时候:
apt install vim
1、目前整个地球上只有一个地方不默认安装vi
Docker 镜像Images 的容器
2、查看VI版本
在命令行:"vi --version"
在文本里面:":version"
3、使用步骤
1.vi filename
vi 后面加文件名 //若存在,则直接打开编辑,若 不存在,则新建一个文件
2.进入插入模式
键入 "i" 键,建议按i键
也可键入 "s"键,但是s键是删除当前光标的字符后,再进入插入模式
3. 插入数据
4. 敲 "Esc"键,或者键入组合键 "^[" (Ctrl-[)进入命令模式
小诀窍:按组合键的时候,一定要先按前面的辅助键不放,然后再按功能键
5. 输入 ":" ,然后键入 "x/wq/w/q!/q/qa/qa!"
|
命令 |
说明 |
状态 |
|
x |
保存并退出 |
|
|
wq |
保存并退出 |
|
|
w |
保存 |
written |
|
q! |
强制退出并不保存 |
|
|
qa! |
等价于q! |
|
|
q |
退出 |
|
|
qa |
等价于q |
快捷退出:
^w q // Ctrl+w q
等价于 :q
4、状态行
当前编辑窗口的最后一行被称为状态行
用于显示文件名
显示行、列
显示字符的个数
5、三种模式
插入模式
|
i |
进入插入模式 |
命令模式
|
^[ 或 Esc |
进入命令模式 |
末行模式
|
: |
进入末行模式 |
插入模式
|
i |
在当前位置插入数据 |
|
a |
光标位置后面插入数据 |
|
A |
本行行尾插入数据 |
|
o |
光标所在行的下一行插入数据 |
|
O |
光标所在行的上一行插入数据 |
|
s |
删除光标所在位置字符并在光标后插入数据 |
|
S |
删除光标所在行并在行首插入数据 |
|
cw |
删除当前光标所在单词并进入插入模式 |
6、在文件中移动光标
上下左右
|
h |
← |
|
l |
→ |
|
j |
↓ |
|
k |
↑ |
行首行尾
|
^ |
行首,非空字符位置,不包含空格 |
|
0 |
行首,空字符处,包含空格 |
|
$ |
行尾,空字符处,包含空格 |
|
g_ |
行尾,非空字符位置,不包含空格 |
文首文尾
|
gg |
文首 |
|
G(shift+g) |
文末 |
屏幕头部中间底部
|
H(shift+h) |
顶行 |
|
M(shift+m) |
中间行 |
|
L(shift+l) |
底行 |
翻屏
|
^f |
往下翻一屏 |
|
^b |
忘上翻一屏 |
撤销
|
u |
撤销一次操作 |
1 change; before #19 22 seconds ago |
|
^r |
反撤销一次操作 |
1 change; after #19 33 seconds ago |
删除
|
x |
删除光标所在处的一个字符 |
|
dw |
删除光标所在处的一个单词 |
|
D(shift+d) |
删除光标所在处后面所有的字符 |
|
dd |
删除当前行 |
|
Ndd |
删除N行 |
|
dw |
删除一个单词 |
复制粘贴
|
yy |
复制一行 |
|
p |
粘贴 |
|
v-w-y |
复制一个单词 |
|
v-y |
复制一个字符 |
7、查找一个字符串
键入 "/" 进入查找模式,然后在后面键入需要查找的字符串
|
n |
跳到下一个字符串 |
|
N |
跳到上一个字符串 |
8、替换
|
:s/old/new |
在一行内将第一个old替换为new |
|
:s/old/new/g |
在一行内将所有old替换为new |
|
:s/old/new/gc |
在一行内将所有old替换为new时每个都确认一下 |
|
:%s/old/new/g |
在文件内将所有old替换为new |
|
:%s/old/new/gc |
在文件内将所有old替换为new时每个都确认一下 |
小诀窍:在":"模式的时,键入 "^p/^n"或"↑/↓"选择已经执行过的命令
9、简单设置
在 ":"模式使用
|
行号 |
set nu(number) set nonu |
|
只读 |
set readonly |
|
缩进 |
set paste |
10、使用分级
|
等级 |
生命周期 |
要求 |
备注 |
|
第一级 |
能吃饭 |
安装 启动 看文档 知道进入之后的常用操作 上下左右 删除 复制 粘贴 插入 退出 |
|
|
第二级 |
有肉吃 |
各种插入你都会 移动光标满天飞 复制粘贴擒拿手 取消操作你不行 出入自由红牌楼 |
|
|
第三级 |
吃香喝辣 |
更好 各种重复 更强 各种跳 更快 到处飞 |
|
|
第四级 |
有人买单 |
成神 |
11、扩展
1.自动提示
|
^p |
调出自动提示窗口,向上一行一行操作 |
|
^n |
调出自动提示窗口,向下一行一行操作 |
|
^m |
确认 |
2.块操作
|
^v |
进入块操作 |
使用块操作在所有行前面加上 ##
^v
-> shift-i
-> ##
-> ^[
3.可视化选择
|
v |
进入可视化选择 |
|
V |
选择一行 |
4.缩进
|
< |
左缩进 |
|
> |
右缩进 |
5.分屏
|
^w s / :sp |
分横屏 |
|
^w v / :vs |
分竖屏 |
|
^w q |
退出 |
|
^w hjkl |
屏之间切换 |
6.创建新文件
通过vi的命令模式,在当前打开的文件里面,使用":"命令之后,
键入 :new file_name 然后即可在当前窗口新创建一个分屏的file_name文件窗口
此时你可以通过 ^w jklm进行上下切换,也可以自由地在多个文件中进行复制粘贴
7.其它高级小诀窍
1、对没有权限的文件修改的保存(使用": w !sudo tee %" ):
your@your:/etc/apt$ vi 1111
插入数据之后,键入命令模式i(":")
操作:
": w !sudo tee %"
-> 按 "O" 或 "L" 均可
:r !uname -a // 插入执行命令之后显示的内容到本文本
:w !sudo tee %
//提权并保存编辑好来的文档
执行过程:
Linux your 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
W13: Warning: File "11111" has been created after editing started
[O]K, (L)oad File:
:w !sudo tee %
Linux your 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
W13: Warning: File "11111" has been created after editing started
Press ENTER or type command to continue
your@your:/etc/apt$ cat 11111
Linux your 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
your@your:/etc/apt$
2、锁屏模式编辑vi
|
^s |
锁屏,终止屏幕终端回显 |
|
^q |
恢复正常模式 |
注意:如果键盘熟悉度不高,也就是说打字速度低于150,或者错误率高于1%,建议不要触碰此等高度危险操作,不然后果自负
3、其它补充:
1、vi 配置文件和搜索模式时的高亮显示小结:
配置文件:
your@your:~$ cd
your@your:~$ ll .vimrc
-rw-rw-r-- 1 your your 31 Aug 7 04:13 .vimrc
|
.file_name |
"." 在linux里面代表隐藏文件 |
通过 ls -a 可以查看隐藏文件
-a, --all
do not ignore entries starting with .
更改vi显示,可以有两种模式:
|
临时 |
在文件内 |
|
永久 |
在.vimrc配置文件内 |
键入符合vi的语法
搜索模式的高亮显示:
永久:
1、vi .vimrc
2、set hlsearch
临时:
1、vi file_name
2、: set hlsearch
永久:
1、vi .vimrc
2、删除 set hlsearch 或者注释
说明:.vimrc的配置文件里面," 双引号代表注释
一个语法高亮和开启行号显示、搜索高亮显示的demo:
2、vi搜索模式前后说明:
|
/ |
向后搜索 |
n:下一个 N:上一个 |
|
? |
向前搜索 |
n:上一个 N:下一个 |
向前 <----"N"---- "?"--"n"--- souce ----"N"---"/" -----"n"---> 向后
3、在vi、mysql中执行linux命令:
|
环境 |
方法 |
说明 |
|
vi |
:! linux_command |
新创建有窗口执行命令 |
|
mysql |
\! linux_command 或 system linux_command |
在当前mysql交互界面执行命令 注意:\! 与命令之间有空格,否则会出现: mysql> \!pwd ERROR: Usage: \! shell-command mysql> \! pwd; /home/huhua mysql> |
system (\!) Execute a system shell command.
4、高级功能:使用SSH服务登陆远程主机:
|
mysql |
system ssh core@192.168.28.144 |
|
vi |
! ssh core@192.168.28.144 |
5、vi 插入":"模式执行命令的输出到vi当前文本里面
:r !linux_command
包括ping都可以导入到文本里面,只是ping的输出不明文显示
vi 编辑器笔记的更多相关文章
- Linux的vi编辑器笔记
vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全屏文本编辑程序,没 ...
- Linux学习笔记(四) vi编辑器
一.vi 编辑器 vi 编辑器 (Visual Interface) 是所有 Unix 及 Linux 系统下标准的编辑器,相当于 Windows 系统中的记事本 它有三种模式,分别是: Comman ...
- VI编辑器学习笔记
VIM的使用 VI是Linux系统中的一种编辑器,它的使用方法和界面与Unix平台十分相似,掌握了VIM的特殊,你可以感觉到它强大的功能与高效.Vim 相对来说较小,无论你使用任何Linux系统,你总 ...
- 1月4日笔记 (vi编辑器)更新...
vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全屏文本编辑程序 ...
- 1月4日笔记 vi编辑器
Penn vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全 ...
- Git笔记之初识vi编辑器
1.vi编辑器 如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建.编辑文件.它是一个随系统一起安装的文本编辑软件. vi编辑器提供了3种模式,分别是命令模式.插入模式. ...
- Unix\Linux | 总结笔记 | vi编辑器
0 目录 新建文件夹 常用的命令 三种模式及切换 vi编辑器的启动选项及后续相关操作 其他--替换文本 其他--写入另一个文件 1 新建文件夹 vi [目录名/文件 ...
- 韦东山ARM裸机笔记(2)--vi编辑器
VI编辑器(Visual Interface--可视化接口) 一.Linux下的一个文本编辑器,所具备的基本功能: 打开.新建.保存文件 光标移动 文本编辑 (多行间 | 多列间)复制.粘贴.删除 查 ...
- Linux 学习笔记 2 Centos 安装与网络的配置以及VI编辑器的使用
前言 当然,还是觉得Centos 在众多的Linux 发行版中,还是很有地位的,好多的服务器大多沿用的都是一代的Centos 因为它开源(这是废话)而且稳定,这才是服务器沿用的最重要的一项指标. 镜像 ...
随机推荐
- linux文件截取前几行,后几行,中间几行命令
1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /etc/passwd 2. 如果你想查看文件的后10行,可以使用tail命令,如: tail -2 /etc/passwd ...
- Python跨目录调用模块
目的就是将脚本执行的根目录加入环境变量. #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import os,sy ...
- MongoDB分片原理篇
MongoDB分片 为什么需要Sharded cluster? MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『可扩展性』,通过json文档来实现灵活模式,通过复制集来保证高可用, ...
- Angular JS 基础应用--第一篇
前 言 Android应用开发中,有一些功能虽然能够使用原生JS来实现,但是会比较的复杂,因此一些相应的框架应运而生了.框架相对于原生JS而言,从主观上来说,最大的改变就是代码 ...
- Qt--自定义View
这是上一篇文章的续篇,关于自定义View. 多个View内部可以映射到同一个数据模型,也可以映射不同的数据结构:可以使用所有数据,也可以只使用部分数据.因为视图层与数据层的分离,操作相对比较灵活. 1 ...
- 一文搞懂各种 Docker 网络 - 每天5分钟玩转 Docker 容器技术(72)
前面各小节我们先后学习了 Docker Overaly,Macvaln,Flannel,Weave 和 Calico 跨主机网络方案.目前这个领域是百家争鸣,而且还有新的方案不断涌现. 本节将从不同维 ...
- asp.net core合并压缩资源文件引发的学习之旅
0. 在asp.net core中使用BuildBundlerMinifier合并压缩资源文件 在asp.net mvc中可以使用Bundle来压缩合并css,js 不知道的见:http://www. ...
- SpringBoot文档翻译系列——29.SQL数据源
原创作品,可以转载,但是请标注出处地址: 因为需要使用到这方面内容,所有对这一部分进行了翻译. 29 使用SQL数据源 SpringBoot为SQL数据源提供了广泛支持,从直接使用JdbcTempl ...
- C++中const用于函数重载
C++中const用于函数重载 常成员函数和非常成员函数之间的重载 首先先回忆一下常成员函数 声明:<类型标志符>函数名(参数表)const: 说明: (1)const是函数类型的一部分, ...
- Quartz源码——Quartz调度器的Misfire处理规则(四)
Quartz调度器的Misfire处理规则 调度器的启动和恢复中使用的misfire机制,还需细化! SimpleTrigger的misfire机制 默认的 Trigger.MISFIRE_INSTR ...