vim作为常用的编辑器,可配置vim特性
配置文件位置
/etc/vimrc 全局
~/.vimrc 个人
vim的三种常见模式:
常见模式 | 作用 |
---|---|
普通模式(命令模式) | 默认模式,可以实现移动光标,复制YY,剪切DD,粘贴P文本 |
编辑模式(Insert模式) | 在默认模式下,一般按a,i,o进入,用于修改文本 |
扩展命令模式(命令末行模式) | 在默认模式下按:进入,可用于保存、退出等 |
三种模式的转换关系:
普通模式—(a,i,o,A,I,O)—>编辑模式—ESC—>普通模式
普通模式—:--->扩展命令模式—ESC、Enter—>普通模式
**
普通模式到编辑模式按键不同效果
**
按键 | 效果 |
---|---|
a | 在光标所在处后面输入 |
i | 在光标所在处输入 |
o | 在光标所在行的下方打开新行输入 |
A | 在光标所在行末尾输入 |
I | 在光标所在行首输入 |
O | 在光标所在行的上方打开新行输入 |
扩展命令模式常用基本命令
命令 | 效果 |
---|---|
w | 存入磁盘 |
q | 退出(未编辑过) |
wq | 写入并退出 |
wq! | 强制写入并退出 |
q! | 强制退出 |
r filename | 读文件到当前文件中 |
w filename | 将当前文件写入另一个文件中 |
!command | 在不退出文本编辑的情况下执行命令,按Enter回到文本编辑 |
r!command | 读入命令的输出结果 |
地址定界
格式:
:start_pos,end_pos CMD
cmd:
d:删除
y:复制
w file:将指定范围内的文字存入另一个文件
r file:将另一个文件内容插入到指定位置
格式 | 效果 |
---|---|
# | 具体第几行,例如光标跳转第3行,”:3“回车,光标跳转到第三行行首 |
m,n | 从第m行开始到第m行结束,例如删除2至5行,”:2,5 d“ |
m,+# | 从第m行开始往后m+#行,例如”:2,+3 d“表示删除2至5行 |
. | 表示当前行 |
$ | 表示最后一行 |
.,$-1 | 表示当前行到倒数第二行 |
% | 全文,相当于1,$ |
举例:全局替换
:%s/要查找的内容/要替换的内容/修饰符
修饰符:
i:忽略大小写
g:全局替换
gc:全局替换,每次替换前询问
:%s/192.168.20.30/192.168.10.10/g
定制vim的工作特性
**显示行号(最常用)**
显示:set number 简写:set nu
取消显示:set nonumber 简写:set nonu
**忽略字符的大小写**
启用:set ignorecase 简写:set ic
不忽略:set noignorecase 简写:set noic
**自动缩进**
启用:set autoindent 简写:set ai
禁用:set noai
**复制保留(当前文本)格式**
启用:set paste
禁用:set nopaste
**显示Tab和换行符^I和$显示** //可查看空白行使用的是空格或者Tab
启用:set list
禁用:set nolist
**高亮搜索** //效果搜索过第二次打开文本编辑器还是亮的
启用:set hlsearch(默认)
禁用:set nohlsearch
**语法高亮** //效果不同的语法显示颜色不同
启用:syntax on
禁用:syntax off
**文件格式** //暂未测试过效果
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 :set ff=unix
**Tab使用空格代替**
启用:set expandtab 默认为8个空格代替tab
禁用:set noexpandtab
简写:set et
**Tab用指定空格的个数代替** //(全局影响,Tab空格数改变全局改变;
配合expandtab使用,后续修改ts值不影响原先使用的tab空格。)
启用:set tabstop=# 指定#个空格代替tab
简写:set ts=#
**设置光标所在行的标识线**(实用) //在光标所在行下方有一条横线显示
启用:set cursorline 简写:set cul
禁用:set nocursorline
**set帮助列表**
:set 或:set all
普通模式下的快捷按键
光标移动
H:左 J:上 K:下 L:右
#COMMAND 跳转到第一个对应的相同字符上
当前显示页面跳转
大写H:页首
大写M:页中
大写L:页底
zz:将当前光标所在行移到屏幕中间
zt:将当前光标所在行移到屏幕顶端
zb:将当前光标所在行移到屏幕尾部
行首行尾跳转
0:跳转到行首
^:跳转到行首非空行的首个字符
$:跳转到行尾
查找
/查找内容 从当前光标所在行向下查询
?查找内容 从当前光标所在行向上查询
n与命令同方向
N与命令反方向
替换命令
r 内容:替换光标所在位置的内容
R:进入到replace模式,替换光标所在位置的内容,直到Esc退出
撤销操作命令
u
删除/剪切命令
dd:删除一整行
#dd:删除光标所在行开始#行
d0:删除光标所在位置到行首的内容
d^:删除光标所在位置到非空行的内容
d$: 删除光标所在位置到行尾的内容
复制命令
yy:复制一整行
#yy:复制光标所在行开始#行
y0:复制光标所在位置到行首的内容
y^:复制光标所在位置到非空行的内容
y$:复制光标所在位置到行尾的内容
粘贴命令
p:复制内容为整行,则粘贴到光标所在行下方;非整行,粘贴到光标所在位置的后方
P:复制内容为整行,则粘贴到光标所在行上分;非整行,粘贴到光标所在位置的前方