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上下跳转%进行括号配对:set fileencoding查看当前文件编码:e ++enc=utf-8使用utf-8重新打开文件:set nu, :set nonu显示/不显示行号,在~/.vimrc中设置set nu持久化设置Ctrl+G显示当前状态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+>界线右移nCtrl+w c关闭当前分屏Ctrl+w o只保留当前分屏i光标处插入,a光标右边插入,o,O下面、上面另起一行,I,A行首尾插入vv, V, Ctrl+v字符、行、块选中w/W, b/B, e/E 包括范围和文本对象,可以结合各种操作使用
i:inner,a:aroundw:word,s:sentence,各种括号引号d删除将内容复制到匿名寄存器中(即剪切),可以使用黑洞寄存器"_避免剪切内容
不剪切的删除(将删除内容复制到黑洞寄存器中,相当于不保存):"_cmd,其中cmd是删除相关的命令,eg:"_x
使用键盘映射实现更简便的写法:
"在~/.vimrc中,将删除映射为不剪切的删除,剪切映射为删除命令前加前缀"
let mapleader = ","
nnoremap x "_x
nnoremap X "_X
nnoremap d "_d
nnoremap dd "_dd
nnoremap D "_D
vnoremap d "_d
vnoremap dd "_dd
"是前缀,通过mapleader设定"
nnoremap x ""x
nnoremap X ""X
nnoremap d ""d
nnoremap dd ""dd
nnoremap D ""D
vnoremap d ""d
vnoremap dd ""dd
在~/.vimrc中输入:source ~/.vimrc使设定生效
在vim中输入:map查看当前的键盘映射
D, d$删除光标至行尾,dd删除当前行
x删除当前字符,daw删除单词及后面的空格,diw删除单词,结合text object
:m,nd删除m-n行
s删除字符并插入,S清空行并插入
先选中,然后x删除选中部分,D删除选中行
yyy复制当前行,:m,ny复制m-n行到剪贴板pp,P粘贴到光标处/后m,ncok复制m-n行到k行下一行m,nmk移动m-n行到k行下一行/pattern匹配,n, N下一个上一个匹配对象*, #匹配下一个,上一个相同的单词cr单字符替换,R字符串替换[range]s/pattern/replace/[flags]
[range]:%(全文),.,m,n,m[flags]:g全局替换,c替换前询问,不写默认替换首个u撤销Ctrl+r重做Ctrl+v选择,Shift+i进入编辑模式,输入插入的字符比如#,再两次EscCtrl+v选择,x或d删除(就是选择然后删除):m,ns/^/#/g:m,ns/^#//g(替换成空白)J将当前行下面的行合并到当前行