2013-02-27 64 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