博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vi学习
阅读量:6952 次
发布时间:2019-06-27

本文共 3734 字,大约阅读时间需要 12 分钟。

  hot3.png

vmware 8.0下安装了ubuntu-10.04-desktop-i386[d044a2a0c8103fc3e5b7e18b0f7de1c8].iso

新装的vi太精简,给~/.vimrc新增如下:

"backspace键删除前一个字符set nocompatible"设置制表符宽度 tabstopset ts=4"设置行首缩进宽度 shiftwidthset sw=4"输入tab时自动转化为空格 expandtabset et"显示行号set number #缩写为 set nu"高亮当前行set cursorline #缩写为cul"高亮当前列 cursorcolumnset cuc"搜索高亮 high light searchset hls"搜索是忽略大小写set ignorecase "将文件格式转换为unix(dos)set fileformat=unix"自动对齐autoindent (继承前一行的缩进方式)set ai"高亮显示匹配的括号set showmatch"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)set incsearch"清除\r,类似%s/\r//gset fileformat=unxi"新建.c文件时,自动插入模板(读入$VIM\cfile.tpl的内容)autocmd BufNewFile *.c r $VIM\cfile.tpl"与系统共享剪贴板set clipboard+=unnamed"整词换行set linebreak"总是显示状态行set laststatusset ls=2"换行符,制表符可见模式set list
## 命令模式下的快捷键:# 合并行 J将光标所在行的下一行移动到该行,再并将光标移动到行尾

相关参考:

http://blog.csdn.net/macrocrazier/article/details/6404267
http://blog.163.com/goldman2000@126/blog/static/1672968952012317105325654/

#显示当前正在编辑的文件5种方法

冒号模式下:file(简写为:f)或者:ls或者:set ls=2 或者:echo %@
阅读模式下 ctrl + g

#另存为

:saveas xxx

#将当前文件保持为html文件(a.c文件另存为a.c.html)

:TOhtml

# 打开配置文件

:edit $MYVIMRC

#制表符,换行符 可见

:set list

#列出所有选项设置情况

:set all

#向后搜索xxx # n为跳到下一个搜索关键字

:/xxx

#向前搜索xxx

:?xxx

#替换字符

:s/xxx/yyy             #将当前行的第一个xxx替换为yyy
:1,10s/xxx/yyy       #将1~10行中没行的第一个xxx字符替换为yyy
:10,$s/xxx/yyy/g    #将10~最后一行的所有xxx字符替换为yyy
:%s/xxx/yyy/g       #将该文件所有的xxx字符替换为yyy,%表示所有行

#  全局替换,模式支持正则

:g/xxx/s/yyy/zzz/g    匹配包含xxx的行,把其中的yyy替换成zzz
:%/xxx/s/yyy/zzz/g     同上
# 显示所有xxx字符
:g/xxx/p

#给文件加密,要取消时,在等待输入密码时直接输入回车即可

:X

#同时打开两个文件,上下分栏显示

vi -o a.c b.c          #左右分栏显示为 -O
#插入模式下的宏替换
:ab aazz abcdefghigklmnopqrstuvwxyz
:map <C-1> !abc 

一些技巧

#交换光标所在字符和其后的字符
xp
#交换光标所在行和其后的行
ddp
#选中所有行
ggVG
#向上移动9行
9k
#格式化当前文件
gg=G
格式化当前光标接下来的8行  
8==
#删除所有行
dG
#上下两行合并
J
#显示总行数
:=

guu 行小写

gUU 行大写
g~~ 行翻转(当然指大小写啦)
guw 字小写(狭义字)
gUw 字大写(狭义字)
g~w 字翻转(狭义字)
vEU 字大写(广义字)
vE~ 字翻转(广义字)
ggguG 把整个文章全部小写(ft!bt!)

阅读模式下的几个常用命令e  往右跳到光标所在单词尾部w  往右跳到光标所在单词首部b  往左调到光标单词的首部ctrl+u 往下滚动半屏ctrl+d 往上滚动半屏(  移动光标到其所在句子的首部)  ..................尾部{  移动光标到其所在段落的首部}  ..................尾部[n]G  移动第n行首部cc 光标所在行替换为空行并等待输入数据A  光标移动到行尾,并等待输入数据~  对光标右边的字符大小写转换,并将光标右移1个字符编辑模式下的几个命令:1,5 co 12     # 将1~5行复制到第12行:1,5mo12       # .......移动.......
#查看当前vim的版本(含有vimrc文件,gvimrc文件,exrc文件路径):version #缩写为:ver#查看vim环境变量:!env #windows 下为!set
#同时打开两个文件, 水平方向vi -o a.c b.c #同时打开两个文件, 垂直方向vi -O a.c b.c

#为F4添加作者信息map 
ms:call TitleDet()
'sfunction AddTitle() call append(0,"##############################################") call append(1,"#") call append(2,"#Author: wangshenghui - wangfeng17399@163.com") call append(3,"#") call append(4,"#QQ:417685417") call append(5,"#") call append(6,"#Last modified: ".strftime("%Y-%m-%d %H:%M")) call append(7,"#") call append(8,"#Filename: ".expand("%:t")) call append(9,"#") call append(10,"#Description: ") call append(11,"##############################################") call append(12,"#!/bin/bash") echohl WarningMsg | echo "Successful in adding the copyright." | echohl Noneendfunction#修改文件修改时间和文件名function UpdateTitle() normal m' execute '/#*Last modified:/s@:.*$@\=strftime(":%Y-%m-%d %H:%M")@' normal '' normal mk execute '/#*Filename:/s@:.*$@\=":".expand("%:t")@' execute "noh" normal 'k echohl WarningMsg | echo "Successful in updating the copy right." | echohl Noneendfunction#判断如果前10行中如果有Last modified:字段#如果没有的话,则代表没有添加过作者的信息等条件,则重新添加#如果有的话,那么只更新修改时间和文件名function TitleDet() let n=1 while n < 10 let line = getline(n) if line =~ '^\#\s*\S*Last\smodified:\S*.*$' call UpdateTitle() return endif let n = n + 1 endwhile call AddTitle()endfunction

H 光标跳到屏幕首行

M .... 中间行
L  ............ 尾行
`` 光标移动上次位置

详细了解vi,可参看Learning the vi and Vim Editors.pdf

转载于:https://my.oschina.net/plp626/blog/173694

你可能感兴趣的文章
mysql中某张表修改较大时的处理
查看>>
如何退出telnet界面
查看>>
nginx+多个tomcat配置
查看>>
sublime实用插件-持续更新
查看>>
DotImage使用教程:从数据库中读写图像
查看>>
行业虚拟化发展趋势——“瑞友杯”虚拟化征文
查看>>
XY问题在开发中的体现
查看>>
更换或加装网卡的eth编号顺序配置
查看>>
Executors下面的线程池实现
查看>>
锐捷CCNA系列(五) 交换机配置模式切换
查看>>
squid命中率监控软件安装
查看>>
备份 Outlook 2010 中接收到的邮件和联系人
查看>>
用open***组建lan to lan ***
查看>>
我的友情链接
查看>>
Invalid source HTML for this operation , Error In IE
查看>>
Linux服务器间建立双向信任-无密码相互访问
查看>>
【COCOS2D-HTML5 开发之二】cocos2d-html5项目定义成员,局部变量,函数笔记随笔
查看>>
rsync与inotify
查看>>
将博客搬至CSDN
查看>>
使用docker镜像玩转steam挂卡
查看>>