vi
编辑
| 命令 | 含义 |
|---|---|
| r | 替换单一字符(在非insert模式下) |
| J | 将当前行和下一行合并 |
| cc | 改变一整行 |
| cw | 改变最后一个单词 |
| c$ | 改变光标到最后一个单词 |
| u | undo |
| ctrl-r | redo |
| . | 重复上一个命令 |
| ~ | 切换大小写 |
| g~iw | 切换当前单词的大小写 |
| gUiw | 当前单词大写 |
| guiw | 将当前单词改为小写 |
| >> | 向右缩进当前行 |
| << | 向左缩进当前行 |
| == | 自动缩进当前行 |
插入
| 命令 | 含义 |
|---|---|
| i | 在光标处进入插入 |
| I | 在当前行行首的非空字符处插入 |
| a | 在光标之后插入 |
| A | 在行尾插入 |
| o | 在当前行下新开一空白行 |
| O | 在当前行前新开一空白行 |
| esc | 退出insert模式 |
| Cursor | Movement |
| ctrl-f | 向上翻页 |
| ctrl-b | 向下翻页 |
| % | {} 、()、[]之间相互跳转,看代码利器 |
| w | jump to end of words(标点) |
| W | jump by words |
| e | jump to end of words(标点) |
| E | jump to end of words |
| b | jump backward by words(标点) |
| B | jump backward by words |
| 0 | 行首(含空白字符) |
| ^ | 行首第一个非空字符 |
| $ | 行尾 |
| gg | 第一行 |
| gd | 跳到方法或变量的声明处 |
| nG | 跳到第n行 |
| fx | 跳到当前行的x字符 |
| ; | 重复上一个f命令 |
| tx | 和fx很像,但是跳到x之前的一个字符 |
查找替换
| 命令 | 含义 |
|---|---|
| /pattern | 模式匹配 |
| ?pattern | 模式匹配(倒着来) |
| n | 重复查找 |
| N | 重复查找倒序 |
| s/old/new/ | 替换当前航第一个old -> new |
| s/old/new/g | 替换当前行所有 |
| s/old/new/gc | 每个替换都需要确认 |
| 1,$s/old/new/g | 替换第一行到最后一行, 1,$等价于% |
剪切复制
| 命令 | 含义 |
|---|---|
| dd | 剪切一行 |
| dw | 删除当前单词 |
| x | 删除光标当前字符 |
| X | 删除光标之前的字符 |
| D | 删除光标所在到行尾 |
| yy | 复制一行 |
| 2yy | 复制两行 |
| yw | 复制光标当前单词 |
| y$ | 复制光标到行尾所有字符 |
| p | 粘贴 |
| P | 在光标之前粘贴 |
退出
| 命令 | 含义 |
|---|---|
| w | 保存 |
| wq | 保存并退出 |
| x | 保存并退出 |
| q | 退出,如果不保存会失败 |
| q! | 强制退出 |
多文件操作
| 命令 | 含义 |
|---|---|
| e xxx | 在一个新的buffer中编辑xxx |
| bn | 切换到下一个buffer |
| bd | 删除一个buffer(关闭文件) |
| sp xxx | 在新的buffer中打开文件并分割窗口 |
| ctrl-w s | 分割窗口 |
| ctrl-w w | 切换窗口 |
| ctrl-w q | 退出窗口 |
| ctrl-w v | 垂直分割窗口 |
| table xxx | 编辑文件在一个新的tab |
| gt | 下一个tab |
| gT | 之前的tabs |
| tabr | 第一个tab |
| tabl | 最后一个tab |
| tabm n | move当前tab之后的第n个 |
显示行号
- 方法一:
1、显示当前行行号,在VI的命令模式下输入:nu
2、显示所有行号,在VI的命令模式下输入:set nu
- 方法二:
使用vi编辑~/.vimrc文件,在该文件中加入一行”set nu”,添加内容不含引号, 命令如下:vi ~/.vimrc
- 方法三:
在UBUNTU中vi的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vi的配置文件存放在/etc目录中,配置文件名为vimrc
在Red Hat Linux 中vi的配置文件存放在/etc目录中,配置文件名为vimrc
使用vi编辑该文件,在该文件中加入一行”set nu”,添加内容不含引号。如Ubuntu命令:vi /etc/vim/vimrc
块编辑模式
1.ctrl + v 进入虚拟模式
2.上下移动
3.I (大写的i)进行编辑
4.ESC,使其对所有行生效
ps
显示当前文件名 ctrl + g 或者 :f
拷贝多行
方法一: 直接使用yy 和 p
直接5yy 然后p
方法二: 使用标签和缓冲区
本文件内:
光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc
然后 :'a,'b co 'c
把 co 改成 m 就成剪切了
不同文件内:
光标移到起始行,输入ma
光标移到结束行,输入mb
然后:'a, 'b w filename
在文件二:
光标移到需要赋值的行,输入:
:r filename
光标移到结束行,输入mx
光标移到起始行,输入"ay'x 复制放到a缓冲区中
光标移到需要复制的行,输入"ap
参考
http://www.freeos.com/guides/lsst/misc.htm#commonvi
[vim命令速查卡一]http://coolshell.cn/airticles/150.html
[vim命令速查卡二]http://coolshell.cn/airticles/5479.html
[拷贝多行]http://www.chinaunix.net/old_jh/4/910342.html
[拷贝多行]http://blog.csdn.net/xiyuan1999/article/details/5680102