Vim 速查表
原创
©著作权归作者所有:来自51CTO博客作者鬼隐丶的原创作品,请联系作者获取转载授权,否则将追究法律责任
Vim 速查表
进入 Vim
- vim filename : 打开或新建文件,并将光标置于第一行首
- vim +n filename : 打开文件,并将光标置于第n行首
- vim + filename : 打开文件,并将光标置于最后一行首
- vim +/pattern filename : 打开文件,并将光标置于第一个与pattern匹配的串处
- vim -r filename : 在上次正用vim 编辑时发生系统崩溃,恢复 filename
- vim +n filename : 打开文件,并将光标置于第n行首
- vim filename 。。 filename : 打开多个文件,依次编辑
vim 配置
- all : 列出所有选项设置情况
- term : 设置终端类型
- ignorance : 在搜索中忽略大小写
- list : 显示制表位(Ctrl + l)和行尾标志($)
- number : 显示行号
- report : 显示由面向行的命令修改过的数目
- terse : 显示简短的警告信息
- warn : 在转到别的文件时,若没保存当前文件则显示 “NO write” 信息
- nomagic : 允许在搜索模式中,使用前面不带“\”的特殊字符
- nowrapscan : 禁止vi在搜索达到文件两端时,又从另一端开始
- mesg : 允许 vi 显示其他用户用write 写到自己终端上的信息
- :set number /set nonumber : 显示 / 不显示行号
- set suler /set noruler : 显示 / 不显示标尺
- set hlsearch : 高亮显示查找到的单词
- set nohlsearch : 关闭高亮显示
- syntax on : 语法高亮
- set nu : 显示行号
- set tabstop=8 : 设置tab大小,8 为最常用最普遍的设置
- set softtabstop=8 : 4:4个空格,8:正常的制表符,12:一个制表符4个空格,16:两个制表符
- set autoindent : 自动缩进
- set cindent : C 语言格式里的自动缩进
移动光标
- k nk : 上 向上移动 n 行
- j nj : 下 向下移动 n 行
- h nh : 左 向左移动 n 行
- l nl : 下 向上移动 n 行
- Space : 光标右移一个字符
- Bakspace : 光标左移一个字符
- Enter : 光标下移一行
- w/W : 光标右移一个字至字首
- b/B : 光标左移一个字至字首
- e/E : 光标右移一个字至字尾
- (/) : 光标移至句尾/首
- {/} : 光标移至段落开头/结尾
- n$ : 光标移至第n行尾
- H : 光标移至屏幕顶行
- M : 光标移至屏幕中间行
- L : 光标移至屏幕最后行
- 0 : 光标移至当前行首
- ^ : 移动光标到行首第一个非空字符
- $ : 光标移至当前行尾
- gg : 移到第一行
- G : 移到最后一行
- f : 移到光标到当前行的字符a上
- F : 相反
- % : 移动到与之匹配的括号上去(),{},[],<>等
- nG : 移动到第n行
屏幕滚动
- Ctrl + u : 向文件首翻半屏
- Ctrl + d : 向文件尾翻半屏
- Ctrl + f : 向文件尾翻一屏
- Ctrl + b : 向文件首翻一屏
- nz : 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部
插入文本类
- i : 在光标前
- I : 在当前行首
- a : 光标后
- A : 在当前行尾
- o : 在当前行之下新开一行
- O : 在当前行之上新开一行
- r : 替换当前字符
- R : 替换当前字符及其后的字符,直至按ESC键
- s : 从当前光标位置处开始,以输入的文本替代指定数目的字符
- S : 删除指定数目的行,并以所输入文本代替之
- ncw/nCW : 修改指定数目的字
- nCC : 修改指定数目的行
删除命令
- x/X : 删除一个字符,x 删除光标后的,X 删除光标前的
- dw : 删除一个单词(删除光标位置到下一个单词开始的位置)
- dnw : 删除n个单词
- dne : 也可,只是删除到单词尾
- d0 : 删至行首
- d$ : 删至行尾
- dd : 删一行
- ndd : 删除当前行及其后n-1行
- dnl : 向右删除n个字母
- dnh : 向左删除n个字母
- dnj : 向下删除n行,当前行+其上n行
- dnk : 向上删除n行,当前行+其下n行
- cnw[word] : 将n个word改变为word
- C$ : 改变到行尾
- cc : 改变整行
- shift+j : 删除行尾的换行符,下一行接上来了
复制粘贴
- p : 粘贴用x或d删除的文本
- ynw : 复制n个单词
- yy : 复制一行
- ynl : 复制n个字符
- y$ : 复制当前光标至行尾处
- nyy : 拷贝n行
撤销
- u : 撤销前一次的操作
- shift+u : 撤销对改行的所有操作
搜索及替换
- /pattern : 从光标开始处向文件尾搜索pattern
- ?pattern : 从光标开始处向文件首搜索pattern
- n : 在同一方向重复上一次搜索命令
- N : 在相反方向重复上一次搜索命令
- cw newword : 替换为 newword
- n : 继续查找
- . : 执行替换
- :s/p1/p2/g : 将当前行中所有p1 用p2 替换掉,
- :n1,n2 s/p1/p2/g : 将第n1至n2行中所有p1用p2替换
- :g/p1/s//p2/g : 将文件中所有p1 用 p2 替换
- 1,$ s/string1/string2/g : 在全文中将string1替换为string2
书签
- m[a-z] : 在文中做标记,标记号为a-z的26个字母
- `a : 移动到标记a处
行方式命令
- :n1,n2 co n3 : 将n1行到n2行之间的内容拷贝到第n3行下
- :n1,n2 m n3 : 将n1行到n2行之间的内容移动到第n3行下
- :n1,n2 d : 将n1行到n2行之间的内容删除
- :n1,n2 w!command : 将n1行到n2行之间的内容作为command的输入并执行,若不指定n1,n2,则将整个文件内容作为command的输入
窗口操作
- :split : 分割一个窗口
- :split file.c : 为另一个文件file.c分隔窗口
- :nsplit file.c : 为另一个文件file.c分隔窗口,并指定其行数
- ctrl+w : 在窗口中切换
- :close : 关闭当前窗口