老规矩,先上干货
- 输入模式,键入
i
或a
或o
都可以进入输入模式 - 普通模式,打开vim默认的模式
- 命令模式,键入
:
进入命令模式
按下 ESC
可以从输入模式或命令模式退回到普通模式
退出 vim ,需要在普通模式下切换到命令模式(:
)
q
无修改的情况下,直接退出q!
有修改的情况下,不保存退出wq
有修改的情况下,保存并退出
编辑 .vimrc
文件:vim .vimrc
"语法高亮
set syntax=on
"自动缩进
set autoindent
"Tab键的宽度
set tabstop=4
"显示行号
set number
"高亮显示匹配的括号
set showmatch
"快速插入文本, o表示换行输入
"map <keymap> oContent
"例子:快速打印一行日志,命令模式输入'dz',将会输出 Bd_Log::warning("==dz==>".var_export($,true)); 光标停在 $ 符号后面
map dz oBd_Log::warning("==dz==>".var_export($,true));<ESC>F$1li
编辑完成后,source .vimrc
使配置生效
普通模式下
单词间移动
(分隔符为非英文)
w
移动光标到下一个单词的词首b
移动光标到上一个单词的词首e
移动光标到下一个单词的结尾ge
移动光标到上一个单词的结尾
(分隔符为空格)
W
移动光标到下一个单词的词首wordB
移动光标到上一个单词的词首beginE
移动光标到下一个单词的结尾end
行内移动
^
移动到行首
$
移动到行尾
行移动
:行号
跳转到相应的行首行号gg
跳转到相应的行首gg
跳转到文件第一行shift + g
跳转到文件最后一行
翻页操作
- Ctrl + f:向后翻一页(forward)
- Ctrl + b:向前翻一页(backward)
- Ctrl + d:向后翻半页(down)
- Ctrl + u:向前翻半页(up)
调整页面布局
zz
:让当前行居中显示,方便浏览上下文zt
:让当前行显示在最上方,方便浏览后面的内容(t 表示 top)zb
:让当前行显示在最下方,方便浏览前面的内容(b 表示 bottom)
匹配括号
光标提留在括号上,包括( {
,}
,[
,]
,(
,)
),键入%
,将会跳转到匹配的括号上
o
进入输入模式,并从下一行进行编辑
i
或a
进入输入模式,从当前光标位置进行编辑
I
从光标所在行的行首进行编辑
A
从光标所在行的行尾进行编辑
dd
快速删除一行,其实这个命令本质上是剪切
5dd
快速删除5行
p
粘贴
yy
复制
5yy
复制5行
u
撤销上一次修改
diw
: 删除一个单词(word)
ca"
:删除双引号内的文本并编辑(包含双引号自身)
yi"
:复制双引号内的文本(不包含双引号自身)
dtx
:向右删除,直到遇到遇到字符 x(不包含 x)
普通模式或命令模式下
/pattern
搜索一个文本,不区分大小写
/pattern\C
搜索一个文本,区分大小写
:范围s/oldpattern/newpattern/替换模式
替换
# 比如:把第 1 - 10 行中所有的 hello 换成 hallo
:1,10s/hehe/haha/g
# % 表示 1,$的范围,也就是整个文件的范围
:%s/hehe/haha/g
# g 表示全部替换,假如不加g的话,只替换1次
大小写切换
guu
当前行全部小写,gUU
当前行全部大写~
当前光标下的字符切换大小写,3~
当前光标下后面三个字符切换大小写guiw
当前单词全部小写,gUiw
当前单词全部大写g~iw
当前单词每个字符大小写交换
列操作
Ctrl + V
进入列操作模式,此时可以选择要操作的行
ec
删除所选单词,并进入编辑模式
ESC
退出编辑模式,并且编辑后的改动作用于选中的行