vi的高级使用

来源:互联网 发布:软件图标显示异常 编辑:程序博客网 时间:2024/05/18 02:18
“s”为表示替换动作,“%”表示所有行,“g”表示全文,“^”表示行首,“$”表示行尾。
:%s#/usr/bin#/bin#g       把文件中所有路径/usr/bin换成/bin或:%s/usr/bin/bin/g
:%d       删除全部   
dG                                               删除光标后所有行
:u                                             恢复上一步操作
:x                                           不提示,直接退出并保存
:1,$s/^M//g               将DOS格式文本转成Unix格式文本
:g/^/s//NewString/g       文本每行的行首添加字符串“NewString”
:%s/^/NewString/g              文本每行的行首添加字符串“NewString”
:g/$/s//NewString/g   每行的行尾添加字符串“NewString”
:%s/$/NewString/g          每行的行尾添加字符串“NewString”
:3,$s/^/NewString/        从文本的第3行至最后一行的行首全部插入字符串“NewString”


:%s/old_string/new_string/g 将文中“old_string”替换成“new_string”
:3,7s/old_string/new_string/ 将文件中的第3行到第7行中的“old_string”替换成“new_string”
:syntax on                                      语法加亮 off,关闭


:set ai                                         自动对齐
:set readonly            将文件设为只读
:set nu                                        显示行号    :set number
:set autowrite           使vi在“:n”和“:!”命令之前都自动保存文件
:set sm                                        匹配 {、[、(
:set all                                         显示所有环境变量


插入模式:
利用“a”、“i”、“c”、 “C”、“O”和“o”等命令可以从命令模式切换到插入模式




太简单的就不说了,随便找手册可以找到,这里就说说一些小技巧吧,也是最近使用给逼出来的学习,呵呵,不过挺方便的。


1. 全局替换
(1) v + G + $ 选定全部,然后输入 :s/原始字符串/目标字符串/
(2) :%s/原始字符串/目标字符串/


2. 清除页面中所有行尾的空白符:
:%s/\s\+$//


3. 清除所有空白
:%s/\(\s*\n\)\+/\r/


4. 去掉所有的//注释
:%s!\s*//.*!!


5. 去掉所有的/* */注释
:%s!\s*/\*\_.\{-}\*/\s*! !


6. 做某些内部数据重复替换
有些时候我们需要组织一些批量的数据进行命令行的执行,比如我们需要利用前面的数据生成后面的数据,例如这样的数据:
/var/database/aaa.txt
/var/database/bbb.txt
/var/database/ccc.txt


我想变成一个个的指令,比如变成一个个复制命令,复制到但前目录,那么可以执行:
:%s/\(.*base\/\)\(.*\.txt\)/cp \1\2 \.\/\2/


变成了:
cp /var/database/aaa.txt ./aaa.txt
cp /var/database/bbb.txt ./bbb.txt
cp /var/database/ccc.txt ./ccc.txt


这里关键是子模式的使用: () 中间的,\1 代表第一个找到的子模式,\2代表第二个,以此类推,vim里面的()必须转义,跟其他语言不一样




7. 增加注释(一个操作应用在多行)
比如需要增加#或者是//这种注释:
Ctrl + v 定位到开始行,然后选定需要的行,然后执行 I 命令,然后输入 # 或 //,然后按 Esc键两次,即可把注释操作应用到所有选定的行,记住选定不能使用v指令,而应该使用Ctrl + v (清除注释请参考上面的方法)(v是按行选定,Ctrl + v 是按照列选定)


8. 对齐行
v 选定需要整齐的行,输入 = 进行归整


9. 打开多窗口
在vim中使用 :sp 文件名 打开行窗口(横),使用 :vsp 文件名 打开列窗口(竖),使用 :q 关闭当前窗口,使用 :qa 关闭所有窗口,使用 Ctrl + w 在各个窗口中进行切换。
最大化窗口:Ctrl + w 激活某个窗口,然后 Shitf + - 进行最大化
改变窗口到指定行高度:Ctrl + w 激活窗口,10(需要变成的行大小数字),Shift + -,执行改变
增加若干行高度:Ctrl + w 激活窗口,10(需要增加的行大小数字),Shift + +,执行改变


10. 字符串/变量提示
在输入内容状态,按 Ctrl + P 则显示所有本页中定义的字符串,如果输入字符串部分内容,然后按 Ctrl + p 则把所有你输入字符串开头的内容显示出来。在输入状态下按 Ctrl + x 能过查看所有有效的其他方式
 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机忘记号码了怎么办 联通高额半停机怎么办 手机充费退款怎么办 手机号销户话费怎么办 微信Q币充错怎么办 淘宝q币充错了怎么办 移动充值错误怎么办 qq忘记密码怎么办登陆 sql数据库满了怎么办 微信充值话费不到账怎么办 填报志愿密码错误怎么办 校园卡被冻结了怎么办 充值卡密码丢了怎么办 联通手机号码不支持开黄钻怎么办 手机qq加载失败怎么办 qq红包额度上限怎么办 qq红包超出限额怎么办 qq红包超过限额怎么办 红包过期没退回怎么办 qb充值错了号码怎么办 天猫q币充值被骗怎么办 微信充错了q币怎么办 qq钱包没银行卡怎么办 qq钱包被限制怎么办 充流量未到账怎么办 云客服被冻结怎么办 联通话费注销了怎么办 我的话费太多怎么办 lol充错账号怎么办 支付宝手机充值没到账怎么办 支付宝限额10000怎么办 米币超过限制怎么办 忘记财付通支付密码怎么办 支付宝忘记登陆密码怎么办 三位数密码忘记了怎么办 登入密码忘记怎么办 电脑登录忘记密码怎么办 支付宝忘记密码怎么办 密码箱忘了密码怎么办 信用卡忘了密码怎么办 我没有财付通钱没有了怎么办