1. 查看
1.1 移动光标
w/W, b/B移动到下一单词、上一单词的开头,e/E移动到下一单词的结尾,大写空格分割,小写非字母分割$, ^行尾 行首,0行间第一个字符Ctrl+f/b翻页,Ctrl+d/u翻半页,Ctrl+e/y上下滚动一行数字+方向键移动多次(数字+cmd执行多次cmd)gg, G文件首尾50%移动到文件50%的位置,:50移动到第50行,.表示当前行号,$表示最后一行的行号/pattern正则匹配查找,n/N上下跳转- 光标移动到括号上时,使用
%进行括号配对
1.2 文件编码
:set fileencoding查看当前文件编码:e ++enc=utf-8使用utf-8重新打开文件
1.3 显示
:set nu, :set nonu显示/不显示行号,在~/.vimrc中设置set nu持久化设置Ctrl+G显示当前状态
1.4 分屏
- 打开
vim -O file1 file2打开多个文本(-O垂直分屏,-o水平分屏):vs file在当前vim中打开file的垂直分屏,:sp file在当前vim中打开file的水平分屏Ctrl+w v/s复制当前屏为相同垂直分屏或水平分屏:new newfile在vim中创建新文本并创建分屏
- 切换
Ctrl+w+w切换下一个Ctrl+w+h/j/k/l,hl左右,jk上下
- 改变位置
Ctrl+w Shift+h/j/k/l,当前屏左上下右移动
- 改变大小
Ctrl+w Shift+|水平加宽,Ctrl+w Shift+_垂直加宽,Ctrl+w =重置大小Ctrl+w n +增加高度n,Ctrl+w n -减少高度n,Ctrl+w n Shift+<界线左移n,Ctrl+w n Shift+>界线右移n
- 关闭
Ctrl+w c关闭当前分屏Ctrl+w o只保留当前分屏
2. 编辑
2.1 进入编辑模式
i光标处插入,a光标右边插入,o,O下面、上面另起一行,I,A行首尾插入
2.2 简单编辑
2.2.1 选中:v
v, V, Ctrl+v字符、行、块选中- 可以结合
w/W, b/B, e/E - 结合text object
2.2.2 text object
包括范围和文本对象,可以结合各种操作使用
- 范围:
i:inner,a:around - 文本对象:
w:word,s:sentence,各种括号引号
2.2.3 删除和剪切:d
删除将内容复制到匿名寄存器中(即剪切),可以使用黑洞寄存器
"_避免剪切内容不剪切的删除(将删除内容复制到黑洞寄存器中,相当于不保存):
"_cmd,其中cmd是删除相关的命令,eg:"_x使用键盘映射实现更简便的写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"在~/.vimrc中,将删除映射为不剪切的删除,剪切映射为删除命令前加前缀" let mapleader = "," nnoremap x "_x nnoremap X "_X nnoremap d "_d nnoremap dd "_dd nnoremap D "_D vnoremap d "_d vnoremap dd "_dd "<leader>是前缀,通过mapleader设定" nnoremap <leader>x ""x nnoremap <leader>X ""X nnoremap <leader>d ""d nnoremap <leader>dd ""dd nnoremap <leader>D ""D vnoremap <leader>d ""d vnoremap <leader>dd ""dd在
~/.vimrc中输入:source ~/.vimrc使设定生效在vim中输入
:map查看当前的键盘映射
D, d$删除光标至行尾,dd删除当前行x删除当前字符,daw删除单词及后面的空格,diw删除单词,结合text object:m,nd删除m-n行s删除字符并插入,S清空行并插入先选中,然后
x删除选中部分,D删除选中行
2.2.4 复制:y
yy复制当前行,:m,ny复制m-n行到剪贴板- 结合text object
2.2.5 粘贴:p
p,P粘贴到光标处/后m,ncok复制m-n行到k行下一行m,nmk移动m-n行到k行下一行
2.2.6 搜索
/pattern匹配,n, N下一个上一个匹配对象*, #匹配下一个,上一个相同的单词
2.2.7 替换:c
- 结合text object
r单字符替换,R字符串替换[range]s/pattern/replace/[flags][range]:%(全文),.,m,n,m[flags]:g全局替换,c替换前询问,不写默认替换首个
2.2.8 撤销重做
u撤销Ctrl+r重做
2.2.9 批量注释
- 方法一:
- 注释:
Ctrl+v选择,Shift+i进入编辑模式,输入插入的字符比如#,再两次Esc - 取消注释:
Ctrl+v选择,x或d删除(就是选择然后删除)
- 注释:
- 方法二:正则替换
- 注释:
:m,ns/^/#/g - 取消注释:
:m,ns/^#//g(替换成空白)
- 注释:
2.2.10 其他
J将当前行下面的行合并到当前行