2013-02-27 61 views
4

我写了一个描述vim折叠的博客。所以我需要这样的代码。如何抽取没有折叠内容的代码块?

+-- 15 lines: set_up_socket_dir() {-------------------------------------------- 

但是当我抽出这一行时,实际上是折叠了折叠的代码。我如何从vim获得该行。

回答

3

要在Vim中显示缓冲区/范围(包括语法高亮和折叠),可以使用内置的:TOhtml命令。这让你HTML。对于整个窗口布局,有ScreenShot plugin

如果你只是想要纯文本,我会启动控制台Vim,用鼠标选择整个内容,并使用终端的复制功能将选择复制到系统的剪贴板。 (我相信你也可以用屏幕TMUX做到这一点。)

3

IIUC,要复制关闭的折叠文本标题。您可以使用无模式选择来执行此操作(请参阅:help modeless-selection)。用标记文字Ctrl + Shift郁闷。

+0

一直在找这个,确实知道如何标记,而不是去复制它,(当GUI)。知道该怎么做':help'并不容易。 – 244an 2013-02-27 20:15:15

+0

@ 244an:在标记_is_复制的Unix系统(包括OSX)上,不知道它是否可以在Windows上运行。 – Thor 2013-02-28 08:39:27

+0

我知道,但在Windows上它更棘手,您必须进入命令模式并执行'' - 如果由于某种原因,您不会按照通常的方式复制它。 – 244an 2013-02-28 09:11:37

3

有可能要签出VIM功能:

:h foldclosed(

你可以写这个功能的:g命令行:

:g/^/if line('.')==foldclosed('.') || foldclosed('.')==-1|y Z |endif 

所以,你的工作流程是:

qzq清除寄存器z

...visual select lines...

'<,'>g/^/if line('.')==foldclosed('.') || foldclosed('.')==-1|y Z |endif

"zp做粘贴

如果你经常使用它,你可以创建一个映射或命令。

它的工作原理是:

enter image description here