免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 746 | 回复: 0
打印 上一主题 下一主题

zz vi 技巧大全 ( zz from bbs.apue.net ) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-04 21:59 |只看该作者 |倒序浏览

原文是
http://bbs.apue.net/cgi-bin/bbscon?board=TecMisc&file=M.1054791064.A&num=1662
这里删掉了作者名、连续的空行、还有一些又长又基本的段落
--------------------------------------------------------------------------------
发信人: lookout (心死怎救), 信区: TecMisc
标  题: vi 技巧大全
发信站: UNIX编程 (Thu Jun  5 13:31:04 2003) , 转信
我先说几个
标记文本
  mchar   用字母char标记当前光标的位置
  `char   移至char所标记处
  'char   移至char标记所在行的开头处
  "     移至当前行上一次所在位置(在光标移动之后)――一个双引号
  ''    移至当前行上第一次所在位置的行的开头处(在光标移动之后)―
                 ―两个单引号
清理掉DOS文本中的^M
      可以在:1,$s/^M//g,其中^是用CTRL+v上去的M是回车形成的
----------------
编辑数个文件(利用vi filename(s))进入vi后)
:args         显示编辑名
单中的各个文件名
:n         ?
3;读入编辑名单中的下一个文件
:rew         读入
编辑名单中的第一个文件
:e#          读入
编辑名单内的前一个文件
:e file        读入另一个文件进
vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则   
        应先以: w 存档。
:e! file       强迫读入另一个文
件进入vi,原文件不作存档动作。
----------------
>>
- 开始录制宏,存入Register中。
@ - 回放中的宏
----------------
偶来说几个(vim):
"*p, 把文本拷贝到系统剪贴板, 可以在别的程序窗口中粘贴
计算器^^:
  (例):在插入模式下输入 35*45=CTRL_R=35*45回车,结果为35*45=1575
          (输入CTRL_R=后光标会跳到底行,应继续输完,你也可以在此输入
           任意四则运算)
快速复制上一行(或下一行):
   (插入模式下)输完一行后回车,在下面一行按住CTRL_Y不放,直到复制完上一行^^
       CTRL_E为复制下一行;
快速插入已输入过的单词:
    (例):如果已经在文本中输入过hello, 再次输hello的时候,在输到he的时候
     按CTRL_P就可补全hello, CTRL_N为向后搜索。
格式化程序段:
     假如你拿到别人的c代码,里面没有代码缩进怎么办?
      首先确保你的vim  cindent选项打开了(:set cindent) ,
      然后在命令模式下按 gg=G 就全部缩进好了。
----------------
保存退出  :x
#vi +10 program.c
直接转到文件第十行
----------------
交换两个字符位置
xp
上下两行调换
ddp
把文件内容反转
:g/^/m0/
----------------
:X
然后系统会提示输入密码
输入密码后存盘退出
下次编辑时请使用
vi -x filename
系统会提示你输入密码
----------------
:set nu 在每行行首加上行号
:set nonu 和上面的相反
----------------
:!command       暂时退出vi并执行shell指
令,执行完毕后再回到vi。
:sh          暂时
退出vi到系统下,结束时按Ctrl + d则回到vi。
vi filename      进入vi并读入指定名称的文件(
新、旧文件均可)。
vi +n filename    进入vi并且由文件的第几行开始。
vi +filename      进入vi并且由文件的最后一行开始。
vi + /word filename  进入vi并且由文件的word这个字开始。
vi filename(s)     进入vi并且将各指定文件列入名单内,第一个
文件先读入。
----------------
vi -r filename 恢复被毁坏的文件
----------------
在查找、替换命令 使用以下正则表达式元字符,功能强大。
也可用在:g/命令中
& 代表最近匹配串
~ 代表最近替换串
. 任一字符
^ 行首 或 表示 非
$ 行末
\ 词尾
*            0次或多次
\( \)  分节指定与其中正则式匹配的部分,在替换时候可以用 \1 \2 \3  ... 引用匹配部

[] 表示选择
- 表示范围 ,例如 [0-9]代表数字,[a-z]代表小写字母 [^0-9a-zA-Z] 代表非数字和大小
写字母
\{m,n\} 前面部分的从 m 次 至 n 次出现,m n 为数值
\{m\}                精确m次出现
\{m,\}               大于等于m次出现
以下举几例子,欢迎大家提出问题来共同探讨。
1.在20列后插入串
:%s/^.\{20\}/&insert something here/g
2.把C++语言里 //注释 修改为 /* */ 格式
:%s/\/\/\(.*\)$/\/\*\1\*\//g
3.在建存储过程的sql文本里,在每个create procedure procname()
  前加上drop procedure  procname ;  [  ]里输入的是一个空格和TAB键。
:%s/^[  ]*[cC][rR][eE][Aa][tT][eE][     ]*[pP][Rr][oO][cC][eE][dD][uU][rR][eE][     ]*
\([^(]*\)/drop procedure \1;Ctrl_VCtrl_Mcreate procedure \1/g
----------------
数字加减, CTRL-A, CTRL-X
----------------
vim里自动缩进一段
把光标移动到某个花括号,
按 =% 缩进整段。
把整段不按格式往外缩一个tab
>%
缩两个
>>%
往里缩
<%
注意%匹配很多东西,
如果你想从
#ifdef
缩到
#endif
也可如此
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21625/showart_253164.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP