2010-09-29 46 views
1
:/From book:/,/$/ cmd_copy [email protected][email protected]_until_end_of_line.txt 

我試圖不使用單詞「寫」,「放」或「讀」,因爲VIM對他們有特殊的含義。我嘗試複製(對不起,不是指VIM的複製命令)匹配文件之間的東西。你怎麼做,沒有複製整個線路?複製匹配,而不是行,但匹配點之間的東西

假人例如

TEXT:

不要複製我dummy1的hello world 請複製我dummy2不要複製我

一些進入,也應該努力與進入btw的匹配點dummy1尚未!

還沒有!

複製將很快結束! dummy2

複製

世界你好,請複製我

dummy1世界你好,請複製我dummy2

+0

我不確定我是否理解你的問題。你能否給我們一個虛構的例子,它看起來像BEFORE和AFTER? 謝謝。 – Benoit 2010-09-29 12:18:52

回答

0

那麼,爲什麼不使用

:1s/^\_.\{-}dummy1// "first line: delete everything until first occurrence of dummy1 
:%s/dummy2\zs\_.\{-}\zedummy1/\n/ 
:1s/\_.*dummy2\zs\_.*// "delete from last occurrence of dummy2 till EOF 
3

startend之間複製文本,使用普通 模式下面的命令序列。

/start/e+1輸入y/end/輸入

第一命令搜索匹配 開始的文本片段複製的圖案的下一次出現,光標定位到第一 字符比賽結束後。第二個將所有東西都拉到下一個 匹配的結束模式。

根據使用命令的上下文,它們可以被重寫爲Ex命令,映射或宏。

  • Ex命令

    :norm!/start/e+1^My/end/ 
    

    (類型^MCtrl鍵 + V輸入。)

  • 映射

    :nnoremap <leader>y /start/e+1<cr>y/end/<cr> 
    
  • :let @y = "/start/e+1\ry/end/\r" 
    

    (或記錄宏通常的方式:類型q,寄存器,用於存儲所述 宏,比方說,y,然後命令,因爲它顯示在回答頂部 ,然後是最後的q。)

相關問題