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