标签:vim
本文旨在梳理文本编辑工具VIM的常用使用方法
知识储备
VIM是VI[Visual Interface]的增强版,是全屏的文本编辑器;
VIM支持插件的工作机制,能拓展功能,可以编辑ANSII、Unicode等文本文件;
它是一款模式化的编辑器:编辑模式、输入模式、末行模式;
VIM自带内建学习教程,可以使用命令Vimtutor;
模式化编辑器
编辑模式:也叫命令模式,能够进行文本 复制、文本移动、文本删除等宏观操作;
通常使用 ESC键 进入
输入模式:输入的内容就是文本文件内容的组成部分,我理解为微观的细节的操作
i 在光标所在处插;
a 追加插入,光标后插入;
I 行首插入;
A 行尾插入;
o 下方新建行,插入;
O 上方新建行,插入;
末行模式:内嵌的命令行接口,通过工具的内置接口完成许多配置工作
通常使用 :键 进入
VIM的打开和关闭
打开指定文件 #vim /PATH/FILE;
若给定的路径文件不存在,则也能进入VIM编辑,相当于新建文件[这个文件可选保存];
打开文件时从第8行开始 #vim +8 /PATH/FILE;
第一次匹配到的模式开始 #vim -/PATTERN /PATH/FILE;
几种关闭退出的方法,通常是在末行模式下退出
:q 直接退出[只适用于打开了文件未作编辑],如果有修改是无法退出的
:wq 保存并且退出
:x 简写,同上
:w /PATH 保存到指定文件位置,说白了是另存为
:q! 不保存退出
编辑模式下 ZZ保存退出
光标跳转
字符间跳转 | |
H | 左跳一个字符 |
L | 右跳一个字符 |
J | 下跳一个字符 |
K | 上跳一个字符 |
#COMMAND:如3H,指定位置字符 跳转 | |
单词间跳转[Linux中单词指的是由字母和数字组成的连续字符串,符号算独立单词] | |
W | 跳转到后面单词词首 |
E | 当前单词或后一个单词词尾 |
B | 当前单词或前一个单词词首 |
支持#COMMAND:3W 3E 来实现多单词跳转 | |
行内跳转 | ^:跳转至行首的第一个非空白字符 0:跳转至行首,绝对行首,可以是空白 $:跳转至行尾,最后一个可能是空白绝对行尾 |
行间移动 | #G:跳转至100行,100G 1G:跳转到第一行 gg:2个小写的gg,也可以跳转到第一行 G:跳转至最后一行 |
句间移动 | ) ( |
段落间移动 | }:跳转到下一段段首 {:跳转到上一段段首 |
编辑命令
字符编辑 | x:删除光标所在处字符 #x:删除光标及向后x个字符,如4x,删除从当前光标起,连续4个字符 xp:光标所在处字符和后面紧跟的字符 对调 r:替换光标所在处的字符 如in 光变移动n上,用rs 即可 is,#r 不常见 |
删除命令 | dd:删除指定行,可以结合3dd d^, d$, d0 dw, de, db 注意:删除的内容会被vim编辑器保存至缓冲区当中,可以撤销,最后一次删除操作可以粘贴,类似于移动效果 |
粘贴命令 | 如果此前复制或删除的内容不是一个完整行 p:粘贴至当前光标所在处后面; P:粘贴至当前光标所在处前面 如果复制的内容是完整行[可以是多行] p:粘贴至当前光标所在行下方; P:粘贴至当前光标所在行上方; |
复制命令 | yy:复制光标所在行,可以结合3yy y^, y$, y0 yw, ye, yb |
改变命令 | yy:复制光标所在行,可以结合3yy c^, c$, c0 cb, ce, cw cc回到绝对行首 c 删除一部分内容,从编辑模式--->输入模式 |
撤销操作 | <1> 编辑模式下u,缓冲区可以保存最近的n次操作,是可以定义的,默认是u <2> Ctrl+R不想撤销了,撤销此前的撤销, 即恢复此前的撤销操作 <3> .:重复前一个编辑操作,比如dd之后 用.号 |
翻屏操作 | Ctrl+B:向前一屏 Ctrl+F:向后一屏 Ctrl+D:向后半屏 Ctrl+U:向前半屏 |
末行模式
地址,定界 | <1>:10 第10行,也可以加上编辑命令如#10d <2>:1,10 绝对表示方式,第1行到第10行,合计10行 <3>:1,+5 相对表示方式,第1行开始,向下5行,合计6行 <4>:. 当前行 <5>:$ 末行 <6>:% 全文,相当于:1,$ <7>:/PAT1/ 第一次被此模式匹配的行 <8>:3,/PAT1/ 从第3行开始,到第一次被模式匹配到的行结束 <9>:/PAT1/,/PAT2/ 范围在第一次被模式匹配到的行和第二次之间 注意:后面可以添加编辑命令 d,y w,r W例子:1,100 w /PATH R例子:请查询如何使用,需要加文件 |
查找 | /PATTERN 向尾部进行 ?PATTERN 向首部进行 支持n、N查询下一个 |
查找替换 | s/要查找的内容/替换为的内容/修饰符 在末行模式下,在地址定界的范围内,完成查找替换操作 要查找的内容:可使用模式 替换为的内容:不可以使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容 \1 \2 ..... &: 引用“要找的内容”匹配到的整个内容 请注意这样使用,需要对要查找的内容使用\( \) |
修饰符 | <1>i 忽略大小写 <2>g 全局替换,默认情况下只替换每行第一次匹配到的,一行中后续的不替 <3>/ 用作分割符,有特殊意义,所以要查找的内容或替换的内容包含此符号,必须要转移,使用格式\ / 分割符可以替换为其他字符:例如@,#等; 例:3,100s/pid/process/g |
VIM技巧
可以同时编辑多个文件#vim file1 file2 file3 ...
默认在第一个编辑文件上,可在末行模式下自由切换
:next, :prev 后一个文件、前一个文件
:first, :last 第一个文件,最后一个文件
:wqall 退出保存所有文件
:q!all 所有都不保存退出
末行模式提供了自由切换,那么自由切换提供了多个文件的复制粘贴功能
#Vim -o File1 File2 File3 水平分割 还可以再次分
#Vim -O FileA FileB FileC 垂直分割
多文件窗口分割:
Vim -o | -O FILE1 FILE2
Ctrl+W+箭头 ,arrow 子窗口间切换
单文件窗口分割:
Ctrl+w,s: split,水平分隔
Ctrl+w,v: vertical,垂直分割
定制工作特性
工作特性本质上是以参数形式定义在VIM的配置文件中
VIM配置文件有2个:
/etc/vimrc 全局VIM的配置文件
~/.vimrc 默认不存在,可以手工创建,用户专有的VIM配置文件
(1)行号
显示:set number 简写 set nu
禁用:set nonumber 简写 set nu
(2)括号匹配
显示:set sm
禁用:set nosm
(3)缩进
显示:set ai
禁用:set noai
(4)高亮搜索
开启Set hlsearch 默认是开启的
关闭no hlsearch
(5)语法着色
开启syntax on
禁用Syntax off 默认禁用的
(6)内置的忽略字符大小写
Set ic
Set noic 默认是禁用的
:help 获取帮助
:help SUBJECT
本文出自 “蓝色仓库” 博客,请务必保留此出处http://bluebox.blog.51cto.com/8852456/1691760
标签:vim
原文地址:http://bluebox.blog.51cto.com/8852456/1691760