2012-11-15 23 views
1

我使用Sed腳本來查看只有少於或者超過長度的行,然後..字符。
該腳本不能與兩者一起工作(當我想查看少於80個字符的行以及70個字符以上的行時)。查看只行少於/長度然後...字符

有誰知道是否有Vim中一個簡單的解決方案,可以只查看這些行和空出(不要刪除)所有其他線路

體育
一個)視圖只有小於75個字符
b)中線僅查看線長於80個字符
b)中僅查看少於75個字符的行和較長然後65個字符

回答

3

可以使用vimgrep命令:

:vimgrep /\v^.{65,75}$/ % 

它會提取其中包含65~75焦線當前文件中的字符。


{,74} => less than 75 
{81,} => great than 80 
{66,74} => between 65 and 75 (exclusively) 

更新:

你可以使用這個命令來清空不匹配的行:

:v/\v^.{65,75}$/s/.*// 

它會清空包含0~6476~+∞字符的行。

+0

謝謝,但它不是完全一樣,我問,但非常有用的知道:) – Reman

+0

Tnx的更新。非常好,但我想看到文本中的行並清空所有不匹配的行。 – Reman

+0

您的更新:是的,這就是我想要的。 ':v/\ v'和'/ s /.*//'是做什麼的?沒有使用「非常神奇」的正則表達式的代碼是什麼?在這種情況下,我想我會更好地理解它。我從來沒有非常神奇的工作。 – Reman

1
+0

感謝沃爾夫岡,我使用這些在我的劇本但有兩件事情,不這樣做:我無法將它們組合起來(這意味着更長的話..字符,不到..字符),如果我選擇一個文本塊,在應用其中一個之後,選擇不再相同。並且.. sed命令不能清空所有其他(不匹配)行。 – Reman

2

與ZyX的回答類似,這可以摺疊不包含65〜75個字符的行。

:set foldmethod=expr foldexpr=getline(v:lnum)!~'\\v^.{65,75}$' foldlevel=0 
+0

謝謝Ingo。很高興知道。 – Reman