[转载]用Vi/Vim/gVim处理字符的大小写转换(暨命令gu gU的灵活使用)(自己补充VI替换的特殊功能)

原贴地址:http://space.itpub.net/519536/viewspace-589227

今天在整理一些DBA维护脚本的过程中,一次又一次的使用到了大小写转换功能,于是乎,整理总结到这个小文儿中,希望对大家有帮助。
举一个在UNIX系统中修改输入脚本的例子的使用场景:
sys@ora10g> col table_name for a14
sys@ora10g> col comments for a55
sys@ora10g> select * from dict where table_name = 'dba_tables';

no rows selected

这里之所以没有查询到数据,是因为'dba_tables'需要是大写的样子'DBA_TABLES'
下面展示一下secooler是如何调用vi编辑器进行修改的

sys@ora10g>define _editor=vi  --设置UNIX中SQLPLUS中的编辑器是vi
sys@ora10g>edit               --使用edit或ed命令就可以进入到vi编辑的界面
Wrote file afiedt.buf          --定位到dba_tables的头部,
                               --使用“gUw”命令就可以将其变成大写的DBA_TABLES啦
  1* select * from dict where table_name = 'DBA_TABLES'
sys@ora10g>/                  --再次执行就可以看到结果喽

TABLE_NAME     COMMENTS
-------------- -------------------------------------------------------
DBA_TABLES     Description of all relational tables in the database

当然,对于伟大的vi编辑器,功能不仅仅是这个,功能还是很丰富的,请慢慢的观看secooler的这个总结小文儿。

所有的操作都是围绕着“gu"和“gU”另个命令展开的。
secooler的语法:[开始位置]gu/Gu[结束位置]
secooler的翻译:
  [开始位置]  ---- 可以指定开始的位置,默认是光标的当前位置
  gu        ---- 把选择范围全部小写
  gU        ---- 把选择范围全部大写
  [结束位置]  ---- 可以跟着类似的w,6G,gg等定位到错做的结束范围

通过上面的语法翻译,您可能已经暗暗的感受到这个命令的强大了吧,如果还没有,不要着急,看下面慢慢分解(有“理”也要有“例”嘛):

1.“字”级别的大小写转换
 guwgue---- 两个命令功能是一样的:光标后面的“字”会变成小写
 guwgue---- 两个命令功能是一样的:光标后面的“字”会变成大写
  扩展一下下
 gu6wgu6e---- 两个命令功能是一样的:光标后面的6个“字”会变成小写
 gU6wgU6e---- 两个命令功能是一样的:光标后面的6个“字”会变成小写

2.“行”级别内容大小写转换
 guu/gUU   ---- 光标当前行统统变小写/大写
 gu0/gU0   ---- 光标位置到行首,统统变小写/大写(不包含光标当前的字母)
 gu$/gU$   ---- 光标位置到行尾,统统变小写/大写(包含光标当前的字母)
 guG/gUG   ---- 光标位置所在行到文章最后一行,统统变为小写/大写
 gu1G/gU1G---- 光标位置所在行到文章第一行,统统变为小写/大写

3.整篇内容大小写转化
 1GguG/1GgUG整篇文章统统变小写/大写(Vim和gVim中可以使用ggguG/gggUG
    secooler示意:1GguG 可以分三部分解释 1G gu G
      1G或vim中的gg ---- 光标定位到文件首
      gu            ---- 选定范围统统变小写
      G             ---- 一直操作到文件结束部分

以上是我经常使用的大小写转换的方法,希望对大家有帮助。
再“买一送一”个小技巧,如果您只是想修改光标当前的字母的大小写,可以使用“~”(键盘左上角数字1左边的键)在反复转换。
工欲善其事必先利其器,强烈建议大家熟练使用Vi、Vim,Windows环境下可以使用gVim。
还有一个Windows下模拟Linux的软件Cygwin,非常的优秀,我一直用它,对我提高工作效率起到了很大的帮助。

就到这里,就到这里,休息,休息一下……

-- The End --


以上是转贴的原文。我下面再自已补充一下VI中的命令行替换功能。
:m,ns/old/new/g            从m到n行把old替换成new
:%s/old/new/gc            整篇替换old到new并确认

如果是涉及到不长度的替换,可以引进正则表达式。
:23,45s/([1-9])//g        把从23到45行的符合(1)......(9)形式的字符替换为空。                有了正则表达式的引入,替换时可以天马行空了。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值