vi和vim简介
文本编辑种类:
- 全屏编辑器:nano(字符工具)、gedit(图形化工具)、vi、vim
- 行编辑器:sed
vi
Visual editor,文本编辑工具,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大
vim
Visual editor IMproved,和vi使用方法一致,但功能更强大,最小化安装时不是比安装软件,需要自行安装。
其他相关编辑器:gVim:一个vim编辑器的图形版本
vim命令格式
vim [IPTION]... FILE... 常用选项: +# #打开文件后,让光标处于第#行的行首,+默认行尾 +/PATTERN #让光标处于第一个被PATTERN匹配到的行行首 -b file #二进制方式打开文件 -d file1 file2… #比较多个文件,相当于 vimdiff -m file #只读打开文件 -e file #直接进入ex模式,相当于执行ex file -y file #Easy mode (like "evim", modeless),直接可以操作文件,ctrl+o:wq|q!保存和不保存退出
- 如果文件存在,文件被打开并显示内容
- 如果文件不存在,当编辑后第一次存盘时创建文件
vim三种主要模式和转换
vim是一个模式编辑器,击键行为依赖于vim的“模式”
三种常见模式:
- 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
- 插入(insert)或编辑模式:用于修改文本
- 扩展命令(extended command)或命令(末)行模式
模式转换
- 命令模式-->插入模式
i insert, 在光标所在处输入 I 在当前光标所在行的行首输入 a append, 在光标所在处后面输入 A 在当前光标所在行的行尾输入 o 在当前光标所在行的下方打开一个新行 O 在当前光标所在行的上方打开一个新行
- 插入模式---ESC--->命令行模式
- 命令模式--- : --->扩展命令模式
- 扩展命令模式---ESC,ENTER--->命令模式
一、扩展命令模式
按冒号“:”可以进入EX模式,创建一个命令提示符:处于屏幕左下方
1.1 扩展命令模式基本命令
w 写(存)磁盘文件 wq 写入并退出 x 写入并退出 X 加密 q 退出 q! 不存盘退出,即使更改都将丢失 r filename 读文件内容到当前文件中 w filename 将当前文件内容写入另一个文件 !command 执行命令 r!command 读入命令的输出
1.2 地址定界
格式:
:start_pos,end_pos CMD
地址定界格式
# #具体第#行,例如2表示第2行 #,# #从左侧#表示起始行,到右侧#表示结尾行 #,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行 . #当前行 $ #最后一行 .,$-1 #当前行到倒数第二行 % #全文, 相当于1,$ /pattern/ #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式 /pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ #从指定行开始,一直找到第一个匹配patttern的行结束 /pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有行
地址定界后跟一个编辑命令
d #删除 y #复制 w file #将范围内的行另存至指定文件中 r file #在指定位置插入指定文件中的所有内容
1.3 查找并替换
格式:
s/要查找的内容/替换为的内容/修饰符
说明:
查找替换中的分隔符“/”可替换为其他字符,如#,@
要查找的内容:可使用基本正则表达式模式
替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用“&”引用前面查找时查到的整个内容
修饰符:
i #忽略大小写 g #全局替换,默认情况下,每一行只替换第一次出现的匹配到的内容 gc #全局替换,每次替换前询问
1.4 定制vim的工作特性
拓展命令模式的配置只是对当前vim进程有效,可将配置存放在文件中持久保持
配置文件:
/etc/vimrc #全局 ~/.vimrc #个人
可添加的配置如下:
1、行号: 显示:set number,简写:set nu 取消显示:set nonumber 简写:net nonu 2、忽略字符的大小写 启用:set ignorecase,简写:set ic 不忽略:set noic 3、自动缩进: 启用:set autoindent,简写:set ai 禁用:set noai 4、复制保留格式 启用:set paste 禁用:set nopaste 5、显示Tab和换行符^I和$显示 启用:set list 禁用:set nolist 6、高亮搜索 启用:set hlsearch,简写:set hls 禁用:set nohlsearch:简写:set nohl 7、语法高亮 启用:syntax on 简写:syn on 禁用:syntax off 简写:syn off 8、文件格式 启用Windows格式:set fileformat=dos 启用Unix格式:set fileformat=unix 简写 set ff=dos|unix 9、tab用空格代替 启用:set expandtab 默认为8个空格代替tab 禁用:set noexpandtab 简写:set et 10、tab用指定空格的个数代替 启用:set tabstop=# 指定#个空格代替Tab 简写:set ts=4
11、set 帮助
:help option-list
:set or :set all
二、命令模式
命令模式,又称为Normal模式,功能强大,只是此模式输入指令并在屏幕上显示,所以需要记忆大量的快捷按键才能更好的使用
2.1 退出vim
1 ZZ 保存退出 2 ZQ 不保存退出
2.2 光标跳转
2.2.1 字符间跳转:
h: 左 l: 右 j: 下 k: 上 #COMMAND: 跳转至由#指定的个数的字符
2.2.2 单词间跳转:
w: 下一个单词的词首 e: 当前或下一个单词的词尾 b: 当前或前一个单词的词首 #COMMAND: 右#指定一次跳转的单词数
2.2.3 当前页跳转:
H: 页首 M: 页中间行 L: 页低 zt: 将光标所在当前行移到屏幕顶端 zz: 将光标所在当前行移到屏幕中间 zb: 将光标所在当前行移到屏幕底端
2.2.4 行首行尾跳转:
^ 跳转至行首的第一个非空白字符 0 跳转至行首 $ 跳转至行尾
2.2.5 行间移动:
#G 跳转至由第#行,相当于在扩展命令模式下输入:# G 最后一行 1G,gg 第一行
2.2.6 句间移动:
):下一句 (:上一句
2.2.7 段落间移动:
}:下一段 {:上一段
2.2.8命令模式翻屏操作:
ctrl+f 向文件尾部翻一屏 Ctrl+b 向文件首部翻一屏 Ctrl+d 向文件尾部翻半屏 Ctrl+u 向文件尾部翻半屏
2.3 字符编辑
x 删除光标处的字符 #x 删除光标处起始的#个字符 xp 交换光标所在处的字符及其后面字符的位置 ~ 转换大小写 J 删除当前行后的换行符
2.4 替换命令(replace)
r 只替换光标所在处的一个字符 R 切换为REPLACE模式(在末行出现-- REPLACE --提示),按ESC回到命令模式
2.5 删除命令(delete)
d 删除命令,可结合光标跳转字符,实现范围删除 d$ 删除到行尾 d^ 删除到非空白行首 d0 删除到行首 dw 删除到下一个单词的词首 de 删除到当前或下一个单词的词尾 db 删除到当前或前一个单词的词首 #COMMAND dd 剪切光标所在的行 #dd 多行删除 D 从当前光标位置一直删除到行尾,等同于d$
2.6 复制命令(yank)
y 复制,行为类似于d命令 y$ y0 y^ ye yw yb #COMMAND yy 复制行 #yy 复制多行 Y 复制整行,行当与yy
2.7 粘贴命令(paste)
p 缓冲区存的如果为整行,则粘贴在当前光标所在行的下方;否,则粘贴在当前光标所在行的后面 P 缓冲区存的如果为整行,则粘贴在当前光标所在行的上方;否,则粘贴在当前光标所在行的前面
2.8 改变命令(change)
c 删除后切换成插入模式 c\$ c^ c0 cb ce cw #COMMAND cc 删除当前行并输入新内容,相当于S #cc C 删除当前光标到行尾,并切换成插入模式,相当于C$
2.9 查找
/PATTERN: 从当前光标所在处向文件尾部查找 ?PATTREN: 从当前光标所在处向文件首部查找 n: 以命令同方向 N: 与命令反方向
2.10 撤销更改
u 撤销最近的更改,相当于Windows中的Ctrl+z #u 撤销之前多次更改 U 撤销光标落在这行后所有此行的更改 ctrl-r 重做最后的“撤销”更改,相当与Windows中的Ctrl+y . 重复前一个操作 #. 重复前一个操作#次
2.11 高级用法
<start position><command><end position> 常见Command:y复制、d删除、gU变大写、gu变小写 例: 0y$ 命令 0 --> 先到行头 y --> 从这里开始拷贝 $ --> 拷贝到本行最后一个字符
例:粘贴“wang”100次 100iwang[ESC] 高级用法 di" 光标在“”之间,则删除“”之间的内容 yi( 光标在()之间,则复制()之间的内容 vi[ 光标在[]之间,则选中[]之间的内容 dtx 删除字符直到遇见光标之后的第一个x字符 ytx 复制字符直到遇见光标之后的第一个x字符
三、可视化模式
在末行有“--VISUAL--”指示表示在可视化模式
允许选择的文件块
v 面向字符,在末行会显示: -- VISUAL -- V 面向整体,在末行会显示: -- VISUAL LINE -- ctrl-v 面向块(可称为列模式),在末行会显示: -- VISUAL BLOCK --
可视化键可用于与移动键结合使用
w、)、}、箭头等
突出显示的文字可被删除、复制、变更、过滤、搜索、替换等
例:在文件行首插入#
1 输入ctrl-v 进入可视化模式 2 输入G 跳到最后1行,选中每一行的第一个字符 3 输入I 切换至插入模式 4 输入# 5 按ESC键
例:在指定的列插入相同的内容
1、光标定位到要操作的地方 2、CTRL+v 进入“可视化”模式,选取这一列操作多少行 3、SHIFT+i(I) 4、输入要插入的内容 5、按ESC键
四、多窗口模式
4.1 多文件分割
vim -o|-O FILE1,FILE2 ... -o:水平或上下分割 -O:垂直或左右分割(vim only) 在窗口间切换:ctrl+w,Arrow
4.2 单文件窗口分割
ctrl+w,s: split,水平分割,上下分割 ctrl+w,v: vertical,垂直分割,左右分屏 ctrl+w,q: 取消相邻窗口 ctrl+w,o: 取消全部窗口 :wqall 退出
五、帮助
:help :help topic Use :q to exit help
vimtutor
六、vim总结图
标签:文本编辑,set,--,模式,vim,命令,光标 来源: https://www.cnblogs.com/Honey-Hao/p/15108464.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。