如何去除环境中Vim的前两列的报价?(How to remove quotes surroundin

2019-06-23 21:09发布

说我有一个文本文件中的行以下样式:

"12" "34" "some text     "
"56" "78" "some more text"
.
.
.
etc.

我希望能够去除环境的前两列的报价。 什么是用Vim做到这一点的最佳方式(我目前使用gVim的)?

我想出如何至少通过视觉方式删除每一行的开头引用,然后输入命令'<,'>s!^"!!

我不知道是否有一种方法来选择文本的整列(一个字符直行下文件...或大于1,但在这种情况下,我将只需要一个)。 如果可能的话,那么你会能够运用x命令(删除字符)到整列。

有可能是更好的方式来做到这一点。 我正在寻找任何建议。


更新

公正仅供参考,我联合了几个建议。 我的_vimrc文件现在有下面几行:

let @q=':%s/"\([0-9]*\)"/\1/g^M'   

(注: ^MCTRL Q + 输入模拟按压运行命令后回车键)

现在我可以通过@ q使用宏来从文件中都列数删除所有的报价。

Answer 1:

控制-V是用于区块选择。 这将让你在相同的字符列中选择的事情。

好像你要删除围绕数字引号。 对于使用,

:%s/"\([0-9]*\)"/\1/g

这里是一个你可以用vim做什么模式列表 。


还有一个(排序的丑陋)形式,将限制到每行4所替换。

:%s/^\( *\)"\([ 0-9]*\)"\([ 0-9]*\)"\([ 0-9]*\)"/\1\2\3\4/g

而且,如果你已经sed方便,你可以从shell尝试这些了。

head -4 filename.txt | sed 's/pattern/replacement/g'

将尝试在第4行中文件的命令。



Answer 2:

使用可视块的命令:

  • 用CTRL-V启动模式
  • 指定的运动,例如,G(该文件的结尾),或使用向上/向下键
  • 对于所选择的块指定删除动作,例如,“d”

更多请见:H视觉模式



Answer 3:

如果你想删除所有列,但第一个说了,简单和容易的方法是输入这个Vim中:

:%!awk '{print $1}'

或者你希望所有列,但第一位的,你也可以这样做:

:%!awk '{$1="";$0=$0;$1=$1;print}'

事实上,它需要外部工具来完成任务,但AWK安装在Linux和Mac在默认情况下,我认为,没有类似UNIX的系统经验的乡亲在Windows中很少使用Vim,否则你可能知道如何获得AWK的Windows版本。



Answer 4:

虽然这种情况是相当简单的用正则表达式来解决,如果你想要做一些更高级的甚至有点我也建议录制像布莱恩·沃德的宏。 另外宏比记住哪些字符需要在vim的正则表达式来进行转义来容易给我。 和宏是好的,因为你可以看到你的改变就会立即生效,并在同一时间在较小的位上的线路改造工作。

所以你的情况,你会按QW开始录制寄存器宏W(当然你也可以使用任何你想要的字母)。 我通常用^移动到一行的开始,因此宏不依赖于光标的位置开始我的宏。 然后,你可以做AF“跳转到第一个” X将其删除,F“跳转到下一个”和X删除了。 那么q完成录音。

相反,在从下一行的微距端的我竟迟至今天想通了,你可以只V(视觉系选择)您想您的宏适用于并执行所有行:它适用您的宏在寄存器W正常@w每个视觉上选择的行。



Answer 5:

请参阅在vim列编辑 。 它描述列插入,但基本上应该以同样的方式工作去除。



Answer 6:

你也可以创建一条删除引号,然后下降到下一行宏(Q)。 然后,你可以告诉VI多少次执行它运行了一堆倍。 所以,如果你存储宏说字母M,那么你可以跑100 @米,它会删除引号为100线。 有关宏的一些详细信息:

http://vim.wikia.com/wiki/Macros



Answer 7:

其他解决方案都不错。 您也可以尝试...

:1,$s/^"\(\w\+\)"/\1/gc

欲了解更多Vim的正则表达式的帮助也看到http://vim.wikia.com/wiki/Search_patterns 。



Answer 8:

  1. 通过启动CTRL + V的视觉块。
  2. 跳在末端,并通过按选择前两列:G,EE。
  3. 类型: :s/\%V"//g ,这将导致在下面的命令:

     :'<,'>s/\%V"//g 

    Enter键 ,这将删除所有"所选块事例。

请参阅: 应用替代的视觉块在Vim的维基



文章来源: How to remove quotes surrounding the first two columns in Vim?
标签: vim replace