:/From book:/,/$/ cmd_copy chapters_from_match_@From_book@_until_end_of_line.txt
我尽量不使用“写”,“放”或“读”字样,因为VIM对它们有特殊意义。我尝试复制(抱歉不是指VIM的复制命令)匹配文件之间的东西。你怎么做,没有复制整行?
虚拟示例
文字:
不要复制我的dummy1你好世界 请复制我dummy2不要复制我
有些进入,还应该用btw进入比赛点dummy1还没有!尚未!
副本即将结束! dummy2
COPIED:
你好世界请复制我
或
dummy1你好世界请复制我dummy2
答案 0 :(得分:3)
要在start
和end
之间复制文字,请使用以下正常序列
模式命令。
/start/e+1
输入y/end/
输入
第一个命令搜索下一次出现的模式匹配 开始复制的文本片段,并将光标定位到第一个 比赛结束后的角色。第二个人猛拉一切直到下一个 匹配结束模式。
根据使用命令的上下文,它们可以是 重写为Ex命令,映射或宏。
Ex命令
:norm!/start/e+1^My/end/
(键入^M
为 Ctrl + V ,输入。)
映射
:nnoremap <leader>y /start/e+1<cr>y/end/<cr>
宏
:let @y = "/start/e+1\ry/end/\r"
(或以通常的方式录制宏:输入q
,注册以存储
宏,比方说,y
,然后在答案的顶部显示命令
最后是q
。)
答案 1 :(得分: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