2012-04-02 24 views
5

是否可以通過EX模式命令將某些線條添加到視覺選擇?將線條添加到通過Ex模式的視覺選擇

我有以下形式的文本:

+----------+-----------+ 
| Some text| other text| 
+----------+-----------+ 
| More text|| 
| And even more || 
| - ...|| 
+----------+-----------+ 

我要顯示這樣的文字:

+---------------+------------+ 
| Some text  | other text | 
+---------------+------------+ 
| More text  |   | 
| And even more |   | 
| - ...   |   | 
+---------------+------------+ 

使用表格插件,當我通過與+刪除線以下工作流程工作:

g!/+/d 
// Visually select the remaining lines 
Tab /| 
// Manually insert the +----+----+ lines 

我想知道是否有辦法保持分隔l並通過EX-Mode(例如:g!/+/ add-line-to-visual-selection)選擇不包含+的線條。

+2

有一個[multiselect](http://www.vim.org/scripts/script.php?script_id=953)插件,但我認爲Vim不支持非連續的選擇,否則。 (我不能說Tabular是否會使用這個插件) – Xophmeister 2012-04-02 10:11:24

+0

這就是我認爲當':Visual'和':h range'都沒有用時 - 我真的無法想到另一種情況曾經錯過了這個功能,所以我可以使用ex-method。 – BergmannF 2012-04-02 10:14:42

+0

這可能是一個愚蠢的問題(我的SSH目前處於關閉狀態,所以我無法測試這個!),但是如果您直觀地選擇整個表格和「Tab \ |',會發生什麼?如果Tabular確實將分隔線擰緊了,也許你可以在參數中使用某種負面的lookaround斷言,所以它忽略了這些行。 – Xophmeister 2012-04-02 10:18:50

回答

3

你可以使用:

:Tab /|\|+/l1 
:<range>g/+/s/ /-/g 

你可以找到幫助在:help /\|\|或多個全球:help pattern,它要表達Vim的正則表達式交替的標準方式。因此/|\|+/是一種分隔符與|+匹配的模式。 (閱讀整個:help pattern具有良好的投資回報,FYI)。

關於Tabular插件中的/l1,您可以更深入地閱讀插件的幫助,它將在分隔符和左對齊文本之後添加空格。

相關問題