vim编辑器操作笔记
vim编辑器功能非常强大,对应的快捷操作也很多,同样网上也有很多博客教程。这里是按自己的使用思路,对常用到的功能做一个简练的笔记,随着实践中不断用到的更多功能再补充完善。
一、vi/vim是什么?
vi - Visual Interface
即可视化界面编辑器。
vim - Vi IMproved, a programmers text editor
即为vi的增加版,具有语法着色功能,尤其适用于程序文本编辑。
vim的配置文件:
-- 全局vim配置文件 /etc/vimrc -- 个人vim配置文件 ~/.vimrc -- 配置root用户vim文件时显示行号 echo "set nu" >> /root/.vimrc
二、vim的模式
如上图示,vim有3种模式。
命令模式切换为输入模式:
i:在当前光标所在字符的前面,转为输入模式 I:在当前光标所在行首,转换为输入模式 a:在当前光标所在字符的后面,转为输入模式 A:在当前光标所在行尾,转换为输入模式 o:在当前光标所在行的下方新建一行,并转为输入模式 O:在当前光标所在行的上方新建一行,并转为输入模式 s:删除光标所在字符 r:替换光标处字符
2.1 命令模式 command mode
初始进入vim时的模式,主要的编辑操作命令也都集中在此模式。后文中如不特别说明是末行命令模式,则默认为此命令模式下的操作方法。
-- 撤销
u
-- 恢复
ctrl+r
-- 删除当前光标字符(剪切同删除)
x
-- 复制基础命令,一般要在高亮模式或搭配光标移动命令使用,见下文
y
-- 复制当前行
yy
-- 相应的从当前行开始复制n行为nyy
nyy
-- 删除基础命令,一般要在高亮模式或搭配光标移动命令使用,见下文
d
-- 删除当前行
dd
-- 相应的从当前行开始删除n行为ndd
ndd
-- 粘贴(在光标后面),如果删除的或复制的为整行内容,则粘贴到光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面
p
-- 粘贴(在光标前面),如果删除的或复制的为整行内容,则粘贴到光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面
P
-- 重复上一次编辑操作,如输入dd删除行之后,再输入.就可以重复dd删除行的操作
.
高亮模式(可视化模式),用于选择文本。
-- 字符模式 v -- 行模式 V
-- 块模式
ctrl+v
2.2 插入模式 insert mode
正常录入的模式。
2.3 末行命令模式 last line mode
主要用于以下操作。
-- 保存
w
-- 退出 q
-- 保存并退出 wq 或 x
-- 强制保存,管理员才有权限 w!
-- 强制退出 q!
查找:
-- 从当前位置向后查找 /PATTERN -- 从当前位置向前查找 ?PATTERN -- 向下查找 n -- 向上查找 N
替换:
-- 替换,n1为起始行,n2为结束行,g表示全局,i表示忽略大小写 n1,n2s/Pattern/String/gi -- 替换全文的一为1,1,$或1,%表示全文 1,$s/一/1/gi -- 替换10-20行的一为1 10,20s/一/1/gi
选择多行的操作:
-- 复制n1到n2行 n1,n2y
-- 复制第10行
10y
-- 复制第10-20行
10,20y -- 删除n1到n2行 n1,n2d
-- 删除第10行
10d
-- 删除第10-20行
10,20d
还有许多其它的便利性功能。
-- 显示行号 set nu
-- 取消显示行号
set nonu
-- 忽略大小写
set ic (set ignorecase)
-- 大小写敏感
set noignorecase
-- 开启自动缩进
set ai (set autoindent)
-- 取消自动缩进
set noai
-- 高亮显示匹配文本
set hlsearch
-- 取消高亮显示匹配文本
set nohlsearch
-- 打开语法高亮显示
syntax on
-- 关闭语法高亮显示
syntax off -- 执行bash命令,列举/etc目录,按Enter回到vim编辑状态 ! ls /etc/
三、vim的光标移动
行内跳转:
-- 行首 Home 或 0 -- 行首第一个非空白字符 ^ -- 行尾 End 或 $
行间跳转:
-- 跳转到第n行 nG
-- 跳转到第一行
1G -- 跳转到最后一行 G
-- 向下移动n行,如1$表示当前行尾,2$表示下一行的行尾
n$
-- 末行模式下跳转到第n行
输入行号n后回车即可
逐字符移动:
-- 左、下、上、右 h、j、k、l -- 移动n个字符 nh、nj、nk、nl
以单词为单位移动:
-- 下一个词首 w -- 下一个词尾 e -- 上一个词首 b -- 移动n个单词 nw、ne、nb
翻屏:
-- 向上翻一屏 Ctrl+b -- 向下翻一屏 Ctrl+f -- 向上翻半屏 Ctrl+u -- 向下翻半屏 Ctrl+d
配合光标跳转命令的复制(剪切、删除同理):
-- 复制到行首 y0 或 y^ 或 y Home -- 复制到行尾 y$ 或y End -- 复制一个word yw 相应的复制n个word为ynw,如y3w -- 复制到文件尾 yG -- 复制到文件首 y1G
四、Vim的分屏及多文件操作
同时打开多个文件:
-- 打开file1,file2,file3 vim file1 file2 file3 -- 末行命令模式下切换文件 next prev last first -- 全部退出 qa
分屏编辑一个文件:
-- 水平拆分窗口 ctrl+w s -- 垂直拆分窗口 ctrl+w v -- 窗口间切换光标 ctrl+w Arrow或hjkl -- 末行命令模式下退出所有窗口 :qa
分屏编辑多个文件:
-- 水平分割显示 vim -o file1 file2 -- 垂直分割显示 vim -O file1 file2
将当前文件中部分内容保存为另外一个文件:
-- 末行模式下,将当前文件另存为到路径指定的文件 w /path/file -- 末行模式下,将n1到n2行文本另存到路径指定的文件 n1,n2w /path/file
将另一个文件的内容填充在当前文件中:
-- 末行命令模式下,将file内容附件到当前文件光标位置 :r /path/file
五、vim的剪贴板
-- 查看各个粘贴板里的内容 :reg -- 双引号+粘贴板号+y,复制到某个粘贴板,例如"ay 复制到粘贴板a "ny -- 双引号+粘贴板号+p,从某个粘贴板粘贴,例如"ap 从粘贴板a粘贴 "np