0

我希望我可以在标准文本文件中格式化文本。
我想选择一个短语或一个单词,调用一个简单的命令,并使用以下格式对其进行格式化:

  • 大胆的
  • 斜体
  • 强调
  • 红色字体颜色
  • 黄色背景色

那可能吗?(类似于 vim 文件中的语法突出显示,但在我的情况下是选定的文本)

我知道 vim 中有一个 Txtfmt 插件,去年我尝试了 2 次,但每次都卸载它。
这就是为什么:

  1. 无法直观地选择文本并对其进行格式化,您必须在命令行中插入开始代码写入文本并在命令行中插入结束代码。
  2. 您无法复制文本,因为 Txtfmt 插件会在文本中插入隐藏的格式代码
  3. 在命令行中插入开始代码和结束代码太复杂(调用通用命令后),代码太复杂
4

2 回答 2

1

这可能是我认为您想要的最简单的实现。它允许使用您描述的颜色/样式在当前缓冲区中突出显示自定义字符串。您选择突出显示的自定义字符串无法在 Vim 会话之间保存。

首先,SpecialTxt为您的定制突出显示定义突出显示组:

au ColorScheme * hi SpecialTxt guibg=yellow guifg=red gui=bold,underline,italic

(请注意,这必须通过 autocmd 完成,以便加载新的配色方案不会覆盖它)。

现在您可以使用以下命令选择任何正则表达式来继承此颜色:

call matchadd( 'SpecialTxt', [YOUR_REGEX], 1 )

或者你可以编写一个简单的命令来设置匹配:

command! -nargs=1 Special :call matchadd('SpecialTxt',"<args>",1)

或者创建一个地图,以便双击一个单词将其设置为这种颜色:

nnoremap <silent> <2-LeftMouse> :call matchadd('SpecialTxt',expand('<cword>'),1)<CR>

希望有帮助。道歉,如果它不是你所追求的。

于 2013-02-19T17:07:51.757 回答
1

需要在文本中插入一种标记。Vim 在纯文本上运行,它没有像文字处理器那样单独的元数据层。通过语法高亮和新的隐藏功能,您可以部分地使 Vim 看起来是所见即所得的,但实际上您仍在对原始文本进行操作。

如果您对这个限制没有问题,并且想坚持使用 Vim 来完成您的编辑任务,我建议您使用现有的标记解决方案,而不是从头开始发明一个新的标记解决方案。到目前为止,有多种语法可供选择,其中Markdown可能是最受欢迎的。(在 Stack Overflow 上也使用了它!)使用现有语法,您可以利用所有现有的插件/映射/命令,甚至一些外部工具(例如,用于转换为 HTML)。

于 2013-02-19T16:57:31.183 回答