vim
vimtutor:系统自带的 vim教程
命令模式操作
-
移动光标
-
h-左,l-右,j-上,k-下
-
行内定位
- 0--行首
- ^--行首,忽略空格
- $--行尾
- f 正向搜索ch字符,ch如果是字母则区分大小写
- F 反向搜索ch字符,ch如果是字母则区分大小写
-
单词间定位,如果是大写,则单词允许包含标点
- w--下一个单词首字母
- e--下一个单语尾字母
- b--前一个单词首字母
-
页面定位
- gg -- 文件的开头
- G -- 文件的末尾
- H--定位到当前页面的顶部
- M--定位到当前页面的中部
- L--定位到当前页面的底部
- nG/ngg/:n -- 跳转到n行
-
块定位
- { --跳到上一个代码块
- } --跳到下一个代码块
- % --定位到另一个匹配的括号
- m <a> -- 标记
- '<a> -- 回到标记位置
- gd -- 跳转到变量(方法)的定义处或者调用处
- 切换屏幕
- ctrl + y --向上滚屏一行
- ctrl+ e --向下滚屏一行
- ctrl + u --向上滚动半屏
- ctrl + d --向下滚动半屏
- ctrl + b --向上滚动一屏
- ctrl + f --向下滚动一屏
-
删除内容
-
x -- 删除光标所在位置的内容,前面可以接数字,3x代表删除三个字符
-
X -- 删除光标前的内容
-
dw -- 删除单词(从光标开始删)
-
d$ / D -- 删除光标到行尾所有内容
-
d0 -- 删除从光标位置到行首所有内容,不包括光标
-
dd -- 删除光标所在行
- d^ -- 删除到行首(第一个非零字符)
-
ndd -- 删除从光标所在行开始向下 n 行的内容
- dt, -- 删除到逗号
- diw -- 删除光标所处的单词
- daw -- 删除光标所处的单词,并包含前后空格(如果有的话)
- di" -- 删除双引号中的内容
- di' -- 删除单引号中的内容
- di) -- 删除小括号中的内容
- di] -- 删除中括号中内容
- di} -- 删除大括号中内容
- diB -- 删除'{}'中的内容
- dit -- 删除 xml tag 中的内容
- dis -- 删除当前句子
- d2w -- 删除下两个单词
- dt( -- 删除从光标位置到小括号前内容
- dgg -- 删除到文件头部
- dG -- 删除到文件尾部
- d} -- 删除下一段
- d{ -- 删除上一段
- J -- 连接若干行
- gJ -- 连接若干行,删除空白字符
- :[range]d -- 删除范围,比如 :20,30d 是删除20到30行,:10d 是删除第十行
- ddp -- 交换两行内容:先删除当前行复制到寄存器,并粘贴
-
-
撤销操作
-
u -- 撤销操作
- U -- 撤销整行操作
-
ctrl + r -- 反撤销
-
-
复制粘贴
-
yy -- 复制当前行
- Y -- 复制当前行,同 yy
- y$ -- 复制当前位置到本行结束的内容
- yt, -- 复制到逗号
- yiw -- 复制当前单词
-
nyy -- 复制n行内容
-
dd -- 剪切一行内容
-
小p -- 将剪切板内容粘贴到光标所在位置的下一行
-
大P -- 将剪切板内容粘贴到光标所在位置的上一行
-
r -- 替换光标所在字符,输入r之后,再输入一个字母
- :[range]y -- 复制范围,比如 :20,30y 是复制20到30行,:10y 是复制第十行
-
-
可视模式
-
v -- 进入可视模式,移动光标选中内容
- V -- 开始按行标记
- CTRL-V -- 开始列标记
-
y -- 复制标记内容
-
d -- 删除(剪切)
-
p -- 从光标位置粘贴
-
大P -- 从光标位置前一位开始粘贴
-
-
查找操作
-
/string -- 从文件顶部查找文件内所有的string
-
?string -- 从文件底部查找文件内所有的string
-
# -- 将光标移到要查找字符串上后按进行查找
-
n/N -- 向上或向下对查找结果进行遍历
-
-
格式化操作
-
>>
-- 当前光标所在行右移一个tab -
<<
-- 当前光标所在行左移一个tab -
n>>
-- 移动光标开始n行右移一个tab -
n<<
-- 光标开始n行左移一个tab -
gg=G
-- 文件整体调整格式 - =a{ -- 缩进光标所在代码块
- =i{ -- 缩进光标所在代码块,不缩进"{"
- == -- 自动缩进
-
-
查看man
-
光标移动到函数位置,按K或者n+K切换到man帮助页
-
- 选择文本,以下如果将i换成a,则会将符号也包含进去。同理,将选择操作(v)替换成插入(c)、剪切(d)或者复制(y),也能实现类似的效果。
-
- vib(选中小括号内的内容)
- viB(选中大括号内的内容)
- vi"(选中双引号内的内容)
- vi'(选中单引号内的内容)
- vi<(选中尖括号内的内容)
- v0 -- 选中当前位置到行首
- v$ -- 选中当前位置到行末
- vt, -- 选中到逗号
- viw -- 选中当前单词
- vi) -- 选中小括号内的东西
- vi] -- 选中中括号内的东西
- vis -- 选中句子中的东西
- gv -- 重新选择上一次选中的文字
11. 其它操作
-
- .(点) -- 重复上一次操作
- ~ -- 交换大小写
- g~iw -- 替换当前单词的大小写
- gUiw -- 将单词转成大写
- guiw -- 将当前单词转成小写
- guu -- 全行转为小写
- gUU -- 全行转为大写
- CTRL-A -- 增加光标所在位置的数字
- CTRL-X -- 减少数字
编辑模式
-
i -- 在光标之前插入
-
I -- 从行首插入
-
a -- 在光标之后插入
-
A -- 从行尾插入
-
s -- 替换字符(删除光标处字符,并进入插入模式,前可接数量)
-
S -- 替换行(删除当前行,并进入插入模式,前可接数量)
-
o -- 在下一行行首插入
-
O -- 在上一行行首插入
- r -- 替换当前字符
- R --进入替换模式,直至 ESC 离开
- cc -- 改写当前行(删除当前行并进入插入模式),同 S
- cw -- 改写光标开始处的当前单词
- ciw -- 改写光标所处的单词
- caw -- 改写光标所处的单词,并且包括前后空格(如果有的话)
- ct, -- 改写到逗号
- c0 -- 改写到行首
- c^ -- 改写到行首(第一个非零字符)
- c$ -- 改写到行末
- ci" -- 改写双引号中的内容
- ci' -- 改写单引号中的内容
- ci) -- 改写小括号中的内容
- ci] -- 改写中括号中内容
- ci} -- 改写大括号中内容
- cit -- 改写 xml tag 中的内容
- cis -- 改写当前句子
- ciB -- 改写'{}'中的内容
- c2w -- 改写下两个单词
- ct( -- 改写到小括号前
多行编辑或删除
-
将光标移动到要插入相同内容的字符上
-
按下 ctrl + v 进入 可视 块 模式
-
上下移动光标选择要同时修改的行数
-
按下大写I 进入编辑模式 / 按d 删除选中的字符
-
输入要插入的内容
-
按 esc 退出,vim 会自动在选择的几行添加相同的内容
末行模式
-
:
-- 切换到末行模式
-
查找替换
-
:s/src/des
-- 只会替换当前行第一个匹配的src为des -
:s/src/des/g
-- 替换当前行所有匹配的src为des -
:%s/src/des
-- 只会替换所有行第一个匹配的src为des -
:%s/src/des/g
-- 替换文件内所有的src为des - :%s/p1/p2/gc -- 替换当前文件中的p1为p2,并且每处询问你是否替换
- :10,20s/p1/p2/g -- 将第10到20行中所有p1替换为p2
- :g/^s*$/d -- 删除空行
- :g/test/d -- 删除所有包含 test 的行
- :v/test/d -- 删除所有不包含 test 的行
- :%s/^/test/ -- 在行首加入特定字符(也可以用宏录制来添加)
- :%s/$/test/ -- 在行尾加入特定字符(也可以用宏录制来添加)
- :sort -- 排序
- :g/^(.+)$ 1/d -- 去除重复行(先排序)
- :%s/^.{10}// -- 删除每行前10个字符
- :%s/.{10}$// -- 删除每行尾10个字符
-
-
保存退出
-
:w
--保存 -
:wq
--保存后退出 -
:q
-- 退出,只有文件没有变化才能退出 -
:q!
--强制退出不保存 -
:x
--相当于wq -
ZZ
-- 命令模式下的保存退出
-
-
vi分屏
-
:sp filename
--横分,上下分 -
:vsp filename
--竖分,左右分 -
ctrl + ww
--切换屏幕 -
:q
--退出一个文件 -
:qall
-- 全部文件都退出 -
:wqall
-- 全部保存退出
-
-
:!command
-- 末行模式下执行shell 命令
vim的配置文件
-
/home/user/.vimrc
--本用户的配置文件(user要替换为对应的用户名)
-
/etc/vim/vimrc
-- 系统vim配置文件,如果用户没有配置,默认使用系统配置
-
可以直接去git上面下载 https://github.com/chxuan/vimplus
-
设置
~/.bashrc
,添加set -o vi
--可以在当前shell环境下使用vim快捷键