[TOC]
# 1. 编译安装
```shell
yum -y install gcc
yum -y install ncurses-devel
yum -y install bzip2
```---
#2. 显示行号
1.`vim /etc/vimrc `
2.`G$`移动到文档末尾
3.追加`set nu`,保存
---
# 3. 移动光标
| 命令 | 说明 |
| ------ | ------------ |
| 0 或 \| | 将光标定位在一行的开头。 |
| $ | 将光标定位在一行的末尾。 |
| 1G | 移动到文件第一行。 |
| G | 移动到文件最后一行。 |
| nG | 移动到文件第 n 行。 |
| :n | 移动到文件第 n 行。 |
| H | 移动到屏幕顶部。 |
| L | 移动到屏幕底部。 |
---
# 4. 滚动屏幕
| 命令 | 描述 |
| ------ | ------ |
| CTRL+d | 向前滚动半屏 |
| CTRL+f | 向前滚动全屏 |
| CTRL+u | 向后滚动半屏 |
| CTRL+b | 向后滚动整屏 |
| CTRL+e | 向上滚动一行 |
| CTRL+y | 向下滚动一行 |
| CTRL+I | 刷新屏幕 |
---
# 5. 编辑文件
| 命令 | 描述 |
| ---- | ------------- |
| i | 在当前光标位置之前插入文本 |
| I | 在当前行的开头插入文本 |
| a | 在当前光标位置之后插入文本 |
| A | 在当前行的末尾插入文本 |
| o | 在当前位置下面创建一行 |
| O | 在当前位置上面创建一行 |
---
# 6. 删除字符
| 命令 | 说明 |
| ---- | --------------- |
| x | 删除当前光标下的字符 |
| X | 删除光标前面的字符 |
| dw | 删除从当前光标到单词结尾的字符 |
| d^ | 删除从当前光标到行首的字符 |
| d$ | 删除从当前光标到行尾的字符 |
| D | 删除从当前光标到行尾的字符 |
| dd | 删除当前光标所在的行 |
可以在命令前面添加一个数字前缀,表示重复操作的次数,例如,2x 表示连续两次删除光标下的字符,2dd 表示连续两次删除光标所在的行。
---
#7. 修改文本
| 命令 | 描述 |
| ---- | ---------------------- |
| cc | 删除当前行,并进入编辑模式。 |
| cw | 删除当前字(单词),并进入编辑模式。 |
| r | 替换当前光标下的字符。 |
| R | 从当前光标开始替换字符,按 Esc 键退出。 |
| s | 用输入的字符替换当前字符,并进入编辑模式。 |
| S | 用输入的文本替换当前行,并进入编辑模式。 |
---
#8. 粘贴复制
| 命令 | 描述 |
| ---- | ------------- |
| yy | 复制当前行 |
| nyy | 复制n行 |
| yw | 复制一个字(单词) |
| nyw | 复制n个字 |
| p | 将复制的文本粘贴到光标后面 |
| P | 将复制的文本粘贴到光标前面 |
---
#9. 高级命令
| 命令 | 说明 |
| ----------- | ---------------------------------- |
| J | 将当前行和下一行连接为一行 |
| << | 将当前行左移一个单位(一个缩进宽度) |
| >> | 将当前行右移一个单位(一个缩进宽度) |
| ~ | 改变当前字符的大小写 |
| ^G | Ctrl+G组合键可以显示当前文件名和状态 |
| U | 撤销对当前行所做的修改 |
| u | 撤销上次操作,再次按 'u' 恢复该次操作 |
| :f | 以百分号(%)的形式显示当前光标在文件中的位置、文件名和文件的总行数 |
| :f filename | 将文件重命名为 filename |
| :w filename | 保存修改到 filename |
| :e filename | 打开另一个文件名为 filename 的文件 |
| :cd dirname | 改变当前工作目录到 dirname |
| :e # | 在两个打开的文件之间进行切换 |
| :n | 如果用 vi 打开了多个文件,可以使用 :n 切换到下一个文件 |
| :p | 如果用 vi 打开了多个文件,可以使用 :n 切换到上一个文件 |
| :N | 如果用 vi 打开了多个文件,可以使用 :n 切换到上一个文件 |
| :r file | 读取文件并在当前行的后边插入 |
| :nr file | 读取文件并在第 n 行后边插入 |
---
# 10. 文本查找
如果希望进行全文件搜索,可以在普通模式(按两次 Esc 键)下输入 / 命令,这时状态栏(最后一行)出现"/"并提示输入要查找的字符串,回车即可。
/ 命令是向下查找,如果希望向上查找,可以使用 ? 命令。
这时,输入 n 命令可以按相同的方向继续查找,输入 N 命令可以按相反的方向继续查找。
搜索的字符串中可以包含一些有特殊含义的字符,如果希望搜索这些字符本身,需要在前面加反斜杠(\)。
| 字符 | 说明 |
| ---- | --------- |
| ^ | 匹配一行的开头 |
| . | 匹配一个字符 |
| * | 匹配0个或多个字符 |
| $ | 匹配一行的结尾 |
| [ ] | 匹配一组字符 |
如果希望搜索某行中的单个字符,可以使用 f 或 F 命令,f 向上搜索,F 向下搜索,并且会把光标定位到匹配的字符。
也可以使用 t 或 T 命令:t 命令向上搜索,并把光标定位到匹配字符的前面;T 命令向下搜索,并把光标定位到匹配字符的后面。
---
# 11. set 命令
| 命令 | 说明 |
| --------- | ------------------------------------ |
| :set ic | 搜索时忽略大小写 |
| :set ai | 设置自动缩进(自动对齐) |
| :set noai | 取消自动缩进(自动对齐) |
| :set nu | 显示行号。 |
| :set sw | 设置缩进的空格数,例如,将缩进空格数设置为4::set sw=4 |
| :set ws | 循环搜索:如果直到文件末尾也没有查找到指定字符,那么会回到开头继续查找。 |
| :set wm | 设置自动换行,例如,设置距离边际2个字符时换行::set wm=2 。 |
| :set ro | 将文件类型改为只读 |
| :set term | 输出终端类型 |
| :set bf | 忽略输入的控制字符,如 BEL(响铃)、BS(退格)、CR(回车)等。 |
---
# 12. 运行命令
> 切换到命令模式,再输入 ! 命令即可运行 Linux 命令。例如,保存文件前,如果希望查看该文件是否存在,那么输入
> :! ls
> 即可列出当前目录下的文件。按任意键回到 vi 编辑器。
---
# 13. 文本替换
```shell
:%s/foo/bar/g #把全部foo替换为bar,全局替换
:%s/foo/bar/g #当前行替换foo为bar
:%s/foo/bar/gc #替换每个foo为bar,但需要确认.
:%s/\<foo\>/bar/gc #单词匹配替换, 需确认
:%s/foo/bar/gci #忽略foo大小写,替换为bar, 需确认
```
---
# 14. 常用命令
> 三种模式:普通模式、编辑模式、命令模式。
```shell
> ggVG #全选(gg:行; V :Visual(可视模式 ;G: 最后一行)
>yy #复制一行
>y #复制选中
>v #选中目标
> d #删除
>u #撤销
> p/P #粘贴
```
> `shift+insert`: 从外部粘贴
> 参考:
> http://www.cnblogs.com/highway-9/p/5984285.html
> http://www.cnblogs.com/qiyuexin/p/6398606.html
> http://wiki.ubuntu.org.cn/Vimfaq
> http://ftp.vim.org/ftp/pub/vim/unix/
网友评论