vi 操作手册
光标移动
-
上下左右 hjkl
-
行里快速左移,移到左边单词首字母:b (begin)
-
行里快速右移,移到右边单词尾字母:e (end)
-
翻到下一页 ctrl+f (front)
-
翻到上一页 ctrl+b (back)
-
直接跳到某一行,底行模式
:12 (跳到12行) (vi显示行号 底行模式 :set nu)
-
跳到文件第一行 gg
-
跳到文件最后一行 G
拷贝
- 拷贝一个单词 yw,多个单词就是 nyw
- 拷贝一行里光标到行首 y^, 到行尾 y$
- 拷贝一行 yy , 多行 nyy
- 拷贝一个块,v 取块,然后hjkl移动光标选中文字,y 进行复制,p进行粘贴
进入编辑模式
- i 是光标处编辑模式,I 是光标行首插入
- a 是光标后边追加,A是行尾插入
- o 是下一行编辑模式,O 是上一行编辑模式
删除
- 删除一个字符 x,多个删除就是2x nx
- 删除一个单词 dw ,多个单词删除就是2dw ndw
- 删除一行 dd ,多行就是 2dd ndd
- 删除该行光标后到行尾 d$
- 删除该行光标前到行首 d^
- 删除光标下所有行 dG
- 删除文件所有内容,可以gg + dG
列编辑
- 光标定位在想要编辑的列位置,ctrl+v,进入可视块操作。移动光标,选择操作多少行。
- shift+i 进入头插入(或者shift+o进入尾插入)模式(此时会在某一行处显示编辑)。
- 编辑完毕后,按下ESC。稍后,这几个选中的行的列出现了插入的字符。
- 如果需要列编辑替换,同样ctrl+v,选中哪些行,然后底行模式,:/s/xx/yy,回车即替换
- 如果需要列编辑删除,同样ctrl+v,选中哪些行,然后按x或者d,则删除
查看剪切板的内容
- :reg
会有"0 或者 “2 这些双引号后边带一个数字的,粘贴的时候就是把对应的数字敲上 “2p
退出vi
- 保存 :w
- 退出 :q
- 强制退出 :q!
查找
底行操作:
查找某个单词 如hello
底行 /hello ,查找时字母n是下一个 N上一个
替换
替换某一行的某个单词 hello–>hi
-
:s/hello/hi
光标所在行 第一个出现的hello替换成hi ,该行全部替换需要加 g (global)参数
-
:n1,n2s/hello/hi/g
n1-n2 行替换,g是全部,否则只替换每行出现的第一个
-
:1,$s/hello/hi/g 替换整个文件
撤销
- 撤销上一次操作 u
- 取消撤销 ctrl+r
分屏
-
vi 打开时机,多个文件在一个屏幕, vi -O file1 file2 (o是截横屏,O竖屏)
-
底行模式 :vsp :sp filename
没有文件名就是自身文件分屏,否则就是和filename分屏
v是vertical sp是split (vsp垂直分隔;sp是水平分隔)
-
分屏时切换各个文件 ctrl+w ,然后接着 hjkl (水平分割就是h,l切换 垂直分割就对应j,k切换)
-
退出所有 :qall
-
比较两个文件内容 shell执行 vimdiff file1 file2
显示&&控制信息
- 行号 :set nu
- 取消行号 :set nonu
- 语法高亮 :syntax on
其他
vim的常见问题,更改 vi ~/.vimrc 配置文件
- cat一个文件时汉字不是乱码,vi进去后是乱码?
解决办法: set encoding=utf8
- vi进去,鼠标拖动文字,不能拷贝?
解决办法: set mouse=v
- vi保存后,会自动产生备份文件
解决办法: set nobackup