参考学习韦东山老师的课程并加以总结
1.vim的简单配置
打开/etc/vim/vimrc,添加下面内容到文件末尾。如下图所示。
"关闭兼容功能
set nocompatible
"显示行号
set number
"编辑时 backspace 键设置为2个空格
set backspace=2
"编辑时 tab 键设置为4个空格
set tabstop=4
"设置自动对齐为4个空格
set shiftwidth=4
"搜索时不区分大小写
set ignorecase
"搜索时高亮显示
set hlsearch
2.vim的三种模式
vi编辑器有三种模式,各个模式侧重点不一样。
- 普通模式 (光标移动、复制、粘贴、删除)
- 输入模式(编辑文本)
2.1进入/退出vim
打开文件 | vim 文件名 |
退出/保存文件 | :w保存文件 |
:wq保存文件并退出 | |
:q!强制退出vi,即使该文件被修改,也不保存该文件 |
备注:w:write;q:quit。
2.2进入输入模式
命令 | 功能 |
---|---|
i | 在光标前插入 |
a | 在光标后插入 |
o | 向下另起一行 |
I | 在行首插入 |
A | 在行尾插入 |
O | 向上另起一行 |
备注:i:insert;a:append。
3 vim基本操作
3.1 光标移动
3.1.1 单格/多格移动
[n]h | ←(向左[n]行) |
[n]j | ↓(向下[n]行) |
[n]k | ↑(向上[n]行) |
[n]l | →(向右[n]行) |
备注:
- [n]表示可选输入;其中n为数字,表示向某个方向移动的格数。
- 键盘上的方向键也可用来移动,效果和hjkl相同。
3.1.2 快速跳转
命令 | 功能 |
0(数字零) | 光标跳转到当前行行首 |
$ | 光标跳转到当前行尾 |
[n]gg | 光标移至第n行的行首 |
nG | |
G | 文件末尾 |
w | 光标移至下一个词(以空格分隔)的首字母 |
b | 光标移至上一个词(以空格分隔)的首字母 |
[n]f<x> | 光标移至当前行中光标右边第n次出现<x>的地方 |
[n]F<x> | 光标移至当前行中光标左边第n次出现<x>的地方 |
Ctrl +f | 向前滚动一整屏 |
Ctrl +b | 向后滚动一整屏 |
备注 :
3.2 复制、粘贴与删除
命令 | 功能 | |
复制 | yy | 复制当前行 |
nyy | 复制当前行及其后的n-1行 | |
粘贴 | p | 粘贴复制/剪切的文本 |
删除 | [n]x | 删除光标后的n个字符 |
[n]X | 删除光标前的n个字符 | |
[n]dd | 删除当前行及其后的n-1行 | |
查找 | /<w> | 向后搜索 |
?<w> | 向前搜索 | |
替换 | :s/<w1>/<w2>/g | 将当前行中所有的w1均用w2替换 |
:<n1,n2>s/<w1>/<w2>/g | 将n1至n2行中所有的w1均用w2替换 | |
:%s/<w1>/<w2>/g | 将文件中所有的w1均用w2替换 |
备注:s:substitute;g:global;c:confirm。
另:正则匹配
vim非贪婪不能用*,可以使用\{-}来替换*进行非贪婪匹配。