2009-12-19 86 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