2009-12-19 102 views

回答

3

在命令模式下,按下Ctrl键 - v进入可视化模式,那么你可以使用光标移动键块选择列。然后,您可以使用适当的vim命令和击键来放大并放置或删除它或您需要的任何内容。

+0

这是一个伟大的命令,我往往很容易忘记 – 2009-12-20 22:11:09

1

,使用:%s/pattern//

图案不能够用一个命令,它主要是一个正则表达式。正则表达式中表达第二个领域是不是很容易

如果要删除第2场,可以过滤通过切割工具

:%! cut -d ' ' -f 2 --complement 
0

,您可以按文本,然后按瓦特到去你的第二栏,并做cw

2

即使第二列不是矩形区域,也不必使用awk。使用替换:

:%s/ \w\+// 

第二列由至少一个由空格分隔的单词字符(\ w \ +)组成。替换是一个空白。这一个是线的选择范围:

:'<,'>s/ \w\+// 
0

您可以在文件刚刚从VIM删除一个给定列。 在命令模式下使用以下命令来删除列n:

:%s/\(.\{n-1}\).\{1}\(.*$\)/\1\2/g 
16

尽管他们可能解决楼主的问题,没有答案的解决了问题的标题广告的问题。我的建议是删除问题的第一行,并将其作为“删除vim中的一列”被一致拒绝,这里是通过实际查找到达的人员的解决方案。

删除与awk的柱(这里,第二个,如在OP的伪代码示例)在vim

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

当然,它也适用于该文件的一部分 - 例如对于线10〜20:

:10,20!awk '{$2=""; print $0}' 

至于“[运行] awkVim的搜索的选择”,不知道你能准确地做到这一点,但无论如何搜索和替换是awk一件容易的事,如果不是它的主要目的。

:%!awk '$2~"pattern" {gsub("pattern","betterpattern",$2)} 

注意,NOT运营商需要逃逸(的\!代替!):下面的第二列,如果它匹配替换“模式”与“betterpattern”。下面通过其增量由10代替在第二列中的值,如果它符合“数字”,让其他线路不变:

:%!awk '$2~"number" {gsub($1,$1+10)} $2\!~"number" {print $0}' 

Appart酒店从这一点这只是awk语法。

+2

我同意,这个问题应该改名,或者这个答案投票最正确的一个。 – AzP 2013-01-08 19:40:15