vim - 如何在 Vim 中使用折叠打印(硬拷贝)?

标签 vim

我有一个非常简单的带有日期和标签的待办事项列表:

141218 Call school &phone @me
141219 Buy groceries &buy @me
141220 Have W order books &buy @W
141220 Think about vacation &vac @me
141221 Have W try Santa Claus outfit &fam @W
141222 Ask a question to S.O. &vim @me

这个列表不长(我脑子里有更长的文件),但假设我想打印它,并且只打印,例如 @W 部分?

首先我要搜索:

/&W

然后折叠(Vim Wikia 简单折叠:技巧 282)

:set foldexpr=getline(v:lnum)!~@/
:nnoremap <F8> :set foldmethod=expr<CR><Bar>zM

我现在有:

+—- 2 lines
141220 Have W order books &buy @W
+—- 1 line
141221 Have W try Santa Claus outfit &fam @W
+—- 1 line

这对硬拷贝部分工作正常:显示所有行......

我应该如何继续打印这个折叠的文件?

最佳答案

不幸的是,:hardcopy 不考虑窗口中的当前表示,它打印物理内容(并且还有其他限制,例如忽略隐藏)。

使用另一种打印方式

:TOhtml 命令随 Vim 一起提供,可以创建当前窗口的 HTML 表示,包括折叠。然后您可以从浏览器打印该 HTML 文件。

(暂时)删除线而不是折叠

你可以使用 :global 命令来做到这一点:

:global!/@W/delete _
:hardcopy
:undo

也许作为自定义命令:

:command! -nargs=? HardcopyMatching execute 'global!/' . <q-args> . '/delete _' | hardcopy | undo

关于vim - 如何在 Vim 中使用折叠打印(硬拷贝)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504394/

相关文章:

powershell - 如何为VIM安装插件?

vim - 为什么这个vim映射会很慢?

Vim + Pathogen 未加载帮助文档

vim - 如何禁用 Vim 中的特定插件?

c++ - 有没有IDE或vim插件或任何可以在编写代码时自动完成成员函数的东西?

vim - 恢复以前的 vim session 后语法突出显示不起作用

Vim:多种模式的重载映射

c++ - Vim 搜索类

vim - 在 vim 中搜索并替换为增量

vim - 设置颜色列在 VIM 上不起作用