Vi有3种模式:
命令模式——命令操作
插入模式——进入vi之后,输入i/a/o,按Esc键,进入命令模式
编辑模式——:set nu, 以回车结束

1、插入
a - 光标后插入
A - 本行末尾插入
i - 光标前插入
I - 本行行首插入
o - 光标下插入新行
O - 光标上插入新行

2、定位
h - 左移
j - 下移
k - 上移
i - 右移
$ - 移至行尾
0 - 移至行首

H - 移至屏幕上端
M - 移至屏幕中央
L - 移至屏幕下端

:set nu      设置行号
:set nonu    取消行号
gg           到第一行
G            到最后一行
nG           到第n行
:n           到第n行

3、删除
x           删除光标所在处字符
nx          删除光标所在处后n字符
dw          删除一单词
dd          删除光标所在行,ndd删除n行
dG          删除光标所在行到文件最后一行的内容
D           删除光标所在处到行尾内容
:n1,n2d     删除n1行到n2行

4、复制&剪切
yy, Y  复制当前行,nyy, nY复制当前行以下的n行
dd 剪切当前行,ndd剪切当前行以下的n行
p, P 粘贴在当前光标所在行下一行或上一行

5、查找&替换
/str           向前搜索,忽略大小写时:set ic
?str           向后搜索
n              搜索指定字符下一个位置
N              搜索指定字符上一个位置
:%s/old/new/g  全文替换
:%s/old/new/c  替换前询问
:n1,n2s/old/new/g  在一定范围内替换

6、保存退出
:wq 保存退出
ZZ 保存退出
:wq! 强行保存退出(对于没有写权限的文件,只有文件所有者或root)
:q! 不保存退出
:w 保存不退出
:w /home/test 另存为

7、屏幕翻滚
Ctrl+u:向文件首翻半屏 
Ctrl+d:向文件尾翻半屏 
Ctrl+f: 向文件尾翻一屏 
Ctrl+b:向文件首翻一屏 
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

8、vi使用技巧
:r /etc/issue   导入issue内容
:!date          vi中使用命令
:r !date        导入命令执行结果

9、定义快捷键
(1) 行首插入/删除注释
:map ^P I#<ESC>        命令行模式下,按ctrl+p, 实现在行首添加注释
:map ^D 0x             命令行模式下,按ctrl+d,实现删除行首字符
注意:^P(不是上位键,是特殊字符) - ctrl+v, ctrl+p。I#表在行首插入#。<ESC>表示按下ESC键。0x,0表示光标跳到行首,x表示删除光标当前字符。

(2) 连续行注释
:n1,n2s/^/#/g          每行行首加入#注释,^表示行首
:n1,n2s/^#//g          删除每行行首#注释,^表示行首,如果没有^,则替换所有的#为空字符
:n1,n2s/^/\/\//g       每行行首加入//, 因为”//”是特殊字符,需要用转义字符/\/\代表//

(3) 快捷键插入内容
:map ^E itoughhou@126.com  命令行模式下,按ctrl+e,插入邮箱地址

(4) 自动替换输入的内容为指定内容
:ab mymail toughhou@126.com 输入mymail回车或空格后,自动替换成toughhou@126.com

10、vi配置文件
如果不把设置保存的话,退出vi后设置消失,下次进入时需要再重新设置,比较麻烦。此时我们可以通过vi配置文件,在各个用户的home目录下(像如我的用户名是tough,配置文件/home/tough/.vimrc).每次进入vi,:set nu, :map ^P I<ESC>都是可以用的。

:set nu
:map ^P I#<ESC>

最新文章

  1. OAuth认证原理及HTTP下的密码安全传输
  2. CQOI 2016 不同的最小割
  3. 轻松进行iPad Safari设置
  4. uva 1605 building for UN ——yhx
  5. Android实现拖动进度条改变图片透明度
  6. 用AsyncTask 来实现下载图片在android开发中
  7. MFC中Edit Control值的获取与赋值
  8. Mongodb集群部署ReplicaSet+Sharding -摘自网络
  9. 解决ubuntu下的firefox无法在线播放音频和视频的问题
  10. 新手介绍简单一下iOS开发中几种界面传值
  11. python变量命名规则
  12. IDEA tomcat启动异常 org.apache.catalina.startup.ContextConfig parseWebXml
  13. 区块链3.0:拥抱EOS
  14. HTTP请求分析工具Fiddler
  15. 全面解读Java NIO工作原理(1)
  16. 一篇文让你看懂NB-IoT、LoRa、eMTC、Sigfox及ZigBee的应用场景【转】
  17. 一个redis因为关闭快照无法连接的BUG
  18. python3用BeautifulSoup用limit来获取指定数量的a标签
  19. Mac系统安装和配置tomcat步骤详解
  20. Model操作补充

热门文章

  1. iOS xcode6添加预编译文件
  2. ArcGIS Server 10.2 实战(四)格栅动态配色服务
  3. ubuntu14_pip 安装
  4. CF Drazil and His Happy Friends
  5. maya 2015配置openCollada插件
  6. Hibernate常见面试题
  7. SQLite的查询
  8. Linux 命令 - wc: 统计文件的行数、字数和字节数
  9. 关于Tesseract3.01的使用方法
  10. 基于asp.net的ajax分页