Vim学习笔记——大刀阔斧

9.1 命令的记录与回放

       1. 操作步骤

          a. q{register}命令: 将后续的动作记录到名为{register}的寄存器中,其中给出的寄存器名字>必须是a到z之间的一个字母.

          b. 执行你要执行的操作,按下q以结束对命令的记录.

          c. @{register}命令:执行刚刚记录下来的宏.

       2. 举个例子

          #include "stdio.h"

          #include "fcntl.h"

          #include "unist.h"

          #include "stdli.h"

          详细的操作步骤:

          qa   :开始将后续的命令记入到寄存器a中.

          ^    :将光标移到行首.

          i#include "<Esc>  :在该行之前插入#include.

          $    :将光标移动到行尾.

          a.h"<Esc> :在行尾加上.h"字符.

          j    :移动到下一行.

          q    :停止记录.

          @a   :执行记录的宏,可以加计数命令,3@a.

          @@   :重复上一次宏的命令.

       3. 编辑宏的内容

          a. "ap命令  :显示宏的内容

          b. "ad$命令 :将编辑好的宏的内容再一次的放入寄存器中.

          c. qA命令   :向寄存器a中追加内容.

   9.2 替换

       1. 通用形式

          :[range]subtitute/from/to/[flags] :对一个指定的范围执行替换操作,range指范围,from被替

换的内容,与搜索命令所用的正则表达式类似,to替换为的内容,flags指一些常用的标记.

          如:s/the /these /g

            the these the these the these the these

          如:s/one\/two/one or two/g

             s=one/two=one or two=g 功能一样.

             one/two one/two one/two one/two one/two one/two

       2. 常用选项

          range  :作用范围,range=% 范围为所有行,而缺省只作用于当前行.

          flags  :标记,flags=g (global) 将改变一行所有符合目标字符串的全部字符进行替换.

                 flags=c (confirm):在执行每个替换前请求用户确认

                 y 好吧,yes 直接进行替换

                 n 不,no 先留下

                 a 全部,all

                 q 退出,quit

                 l 把现在这个修改结束后进行退出,last

                 CTRL-E  向上滚屏一行

                 CTRL-Y  向下滚屏一行

   9.3 命令的作用范围 range的范围

       :45,49s/this/that/g     :对第45行到第49行的文本执行替换操作.

       :33s/this/that/g        :对指定行进行替换操作.

       :.,$s/this/that/g       :当前行到最后一行范围,如%=1,$.

       :?^Chapter?,/^Chapter/s=this=that=g    :使用搜索模式来指定作用范围.

       :?^Chapter?+1,/^Chapter/-1s=this=that=g    :增与减行的范围操作.

       :.+3,$-5s/this/that/g   :将当前行的下三行到倒数第六行的作用操作.

       :'t,'bs/this/that/g   :使用标记确定操作范围.

       :'<,'>s/this/that/g   :Visual模式确定的范围.

       :'>,$s/this/that/g   :从上一次Visual模式时选定的文本区域的结束处到文本尾的这样区域

       :.,.+4s/this/that/g  :.代表当前行到.+4从当前行到向下的4行,一共5行.

   9.4 全局命令

       :[range]global/{pattern}/{command}  :找到符合某个匹配模式的行,然后将命令作用于这些行上,全局命令的默认作用范围是整个文件.

       :g=//=s/foobar/barfoo/g      :整个文件中包含//的行,进行替换操作.

       :g=//=d                      :整个文件中包含//的行,进行删除操作.

   9.5 Visual Block模式

       1. 插入文本

          Istring<Esc>   :在文本块的每行的行首,进行插入文本.

          Astring<Esc>   :在文本块的每行的行尾,进行插入文本.

       2. 改变文本

          cstring<Esc>   :修改文本块的文本,仅会修改文本块的内容.

          Cstring<Esc>   :修改文本块的文本,会修改文本块尾部的内容.

       3. 改变文本在大小写

          ~ :交换大小写 (aBc->AbC)

          U :将小写变大写 (abc->ABC)

          u :将大写变小写 (ABC->abc)

       4. 填充命令

          rx命令:  以字符x进行文本块的填充操作.

       5. 左右移动

          <命令 :会使你的文本向左移动一个shift单位.

          >命令 :会使你的文本向右移动一个shift单位.

          :set shiftwidth=4

       6. 将多行内容粘接起来

          J命令  :使文本块纵跨的所有文本被连接为一行.

          gJ命令 :如果你想保留那些前导空白和后缀的空白时,可以使用.

  9.6 读写文件

      1. 读取文件

         :read filename      :读入文件的内容放在当前行.

         :$read filename     :追加到文件的最后.

         :0read filename     :把文件放在第一行的上面.

         :80read filename    :把文件放在指定行的上面.

      2. 写入文件

         :write filename     :没有指定一个范围时该命令将写入整个文件的内容.

         :.,$write filename  :当前行到文件尾的内容写入文件,如果文件存在则失败.

         :.,$write! filename :强制当前行到文件尾的内容写入文件,会进入覆盖操作.

         :.write filename    :将当前行写入文件中.

         :.write >> filename :将当前行的内容追加到文件中.

  9.7 格式化文本

      :set textwidth=72      :键入文字的时候每行的内容能自动调节到适应当前设置的宽度,每一行都>会自动调整到只包含最多72个字符,Vim进行格式化时不会打断你的单词.

      :gqap                  :gq为Vim的一个格式化操作符,ap是一个本文对象,a paragraph.

      :gg gqG                :格式化整个文件的内容.

      :gqgq                  :格式化当前行,可以与.重复命令一起使用.

      :gqj                   :格式化当前行和它下面的一行.

  9.8 改变大小写

      guw命令                :gu是变小写的操作符,w是位移.

      gUw命令                :gU是变大写的操作符,w是位移.

      g~w命令                :将字母的大小写进行反转,大写变小写,小写变大写.

      gugu命令               :使一整行变为小写,简写为guu,同理gUgU gUU g~g~ g~~.

  9.9 使用外部程序

      sort < input.txt > output.txt

      !5Gsort       :!过滤操作符,5G为移动命令,决定了将哪个区域送到过滤程序中.

      !!date        :!!命令过滤当前行,date命令显示当前时间.

      :read !ls     :读取当前目录下的内容.

      :write !wc    :将文本写入一个命令wc中,wc命令是统计行数,单词数,字符数.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值