zoukankan      html  css  js  c++  java
  • vim初步将txt文本批量格式化为xml

    vim是linux上的编辑器,而gvim是windows上的版本。因为要把数量不少的txt的文本格式化为xml文本,如果手动的话工作量会很大,所以想到了用gvim,因为它可以用命令批量操作。

    要格式化的文本资料是下面这个样子:


    现在要把它变成如下的xml格式。

    <scale>
         
    <questions>
            
    <question>题目一</question>
            
    <question>题目二</question>
          
    </questions>
          
    <answers>
                
    <answer score='1'></answer>
                
    <answer score='0'></answer>
          
    </answers>
          
    <description>
              
    <item></item>
              
    <item></item>
          
    </description>
          
    <tip>
          
    </tip>

    </scale> 

    chapter one:相关vim的基本操作

    1, 三种模式

    可视模式(visual mode)

    命令模式(command mode)---能够编辑命令的模式。

    插入模式(insert mode)---能够编辑文本的模式

    三种模式的转换: 

    在命令模式和普通模式中按ESC退出模式。

    按i,I,a,A,o,O中的一个进入插入模式,四个命令的不同在于

    i--光标定位在当前位置前

            a--光标定位在当前位置前

    I-- 光标定位在当前行的第一个非空白字符前

            A--光标定位在当前行的最后一个非空白字符后 

    o--在当前行的下面新建一行,并光标定位到行首

    O--在当前行的上面新建一行,并光标定位到行首

    按v或者V进入可视模式。

    按冒号进入命令模式。 

    2,打开文件,新建文件,保存文件

    可以用vim软件自带的菜单打开文件,如果不想这样做的话,打开文件的命令是  :e path。 有个技巧就是可以用tab键,它有进行提示的功能,尤其当文件路径名很长的时候,tab键尤其的方便。

     对于新建文件同样可以用菜单鼠标操作,命令是  :enew path。

    保存文件  :w 

    3, 浏览文本(普通模式下的操作,不是命令,当做快捷键吧)

     j 下一行   k上一行  h前一个字   l后一个字

    这样的命令的确很别扭,但是据说这是为了操作更加快速而设计的。还有,可以这样操作,5j,6k,8h,9l,这样是上下走5行,向上走6行,向前走8个字,向后走9个字。

    gg 回到文本的最开头

    ^  到本行的第一个非空白字符

    0  到本行的第一列 (这是阿拉伯数字0)

    $  到本行的结尾 

    g_ 到本行的最后一非空白字符 

    o 在当前行的下面插入新的一行

    O 在当前行的上面个插入新的一行 

    w 到下一个词

    W 到下一个词,忽略标点 

    e 到词的结尾

    E 到词的结尾,忽略标点符号 

    b 到词的开头

    B 到词的开头,忽略标点符号

    ge 到上一个词的结尾

    gE 到上一个词的结尾,忽略标点符号 

    4,编辑 

    dd 删除当前行  

    x 删掉当前字符 

    d..  d后面跟一个命令,比如d^那就删除从当前光标到行首的内容,d$j那就删除当前光标到行末的内容

    c..  意思跟上面的产不多,只是删除之后变为插入模式

    x  删除当前位置的字符

    X 删除当前位置前面的字符

    y.. 复制当前位置到下一个命令之间的内容

    p 在当位置后粘贴

    P 在当前位置前粘贴(大写p)

    r 替换当前字符

    s 替换

    . 重复上一个插入或编辑操作

    dd yy cc对一行进行操作 ,dd删除一行,yy复制一行,cc编辑一行

    5, 查找(普通模式下)

    /string ,可以用正则表达式,所以很强大。

    比如上面的文本中,找每题末尾的□□(不是口,在搜狗拼音下打方框两个字就会出现这个图形) 

     键盘输入   /□□  就会如下效果

     

    目标字符被高亮显示出来,可以用n移动。 

    再来看看每题前面的数字怎么选中,因为它们变化的,所以必须用正则表达式了。

    /\d 

     

    \d就是选择数字,前面的\是转义字符

    \s是一个字符,*同样表示0个或多个,+表示1个或多个

    5,替换

    命令:s/a/b/ 将a替换为b。可以用字符&代替a。

    6,录制宏

    qa--录制宏a

    q--结束录制

    @a 执行a

    100@a执行100次 

    chapter2:操作  把每个测试题目用<question></question>包围。

     执行命令:%s/\d\+\s*/<question>/gc 

    %是全文的意思,/gc是一直替换的意思。s\d\+\s*/<question>就是s/a/b命令,把数字和空白用<question>代替

    效果如下: 

     

    执行命令:%s/□□/<\/question>。也是替换,把行尾的两个方框用</question>代替,因为/是特殊字符所以用\转义了。 

    效果如下: 

     

    最近放弃windows转向linux,又开始使用vim,下面添加一些学习vim的好教程:

    (1)对vim的大概了解,可以使用vim自带的教程,输入vimtutor

    (2)vim的帮助手册,在vim中进入:help user-manual

    (3) vim经常使用的命令总结

    http://coolshell.cn/articles/5426.html

    (4)如何打造vim的成IDE

    http://blog.csdn.net/wooin/article/details/1858917

    (5)vim编程,配置与技巧

    http://linux-wiki.cn/wiki/%E7%94%A8Vim%E7%BC%96%E7%A8%8B%E2%80%94%E2%80%94%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%8A%80%E5%B7%A7

    (6)vim插件介绍

    http://www.cnblogs.com/samwei/archive/2011/04/21/2024355.html

    后续继续补充。。。 



  • 相关阅读:
    数组的反转和二维数组
    初识数组
    Python学习笔记-Day8
    Python学习笔记-Day7
    Python学习笔记-Day6
    Python学习笔记-Day5
    Python学习笔记-Day4
    Python学习笔记-Day3
    Python学习笔记-Day2
    Python学习笔记-Day1
  • 原文地址:https://www.cnblogs.com/orchid/p/2102207.html
Copyright © 2011-2022 走看看