我希望我可以在标准文本文件中格式化文本片段 我想选择一个短语或一个单词,调用一个简单的命令,并使用这些格式进行格式化:
这可能吗? (类似于vim文件中的语法高亮,但在我的情况下使用选定的文本)
我知道vim中有一个Txtfmt插件,我在过去几年尝试了2次,但每次都卸载了它。
这就是原因:
答案 0 :(得分:1)
您的文本中需要插入一种标记。 Vim在纯文本上运行,没有单独的元数据层,如文字处理器。通过语法高亮和新的隐藏功能,您可以部分地使Vim看起来像WYSIWYG,但实际上您仍在使用原始文本。
如果你对这个限制很好,并且想要坚持使用Vim进行编辑任务,我建议使用现有的标记解决方案,而不是从头开始创建一个新的解决方案。到目前为止,有几种语法可供选择, Markdown 可能是最受欢迎的。 (它也在Stack Overflow中使用!)使用现有语法,您可以利用所有现有的插件/映射/命令,甚至一些外部工具(例如,用于转换为HTML)。
答案 1 :(得分:1)
这可能是我认为你想要的最简单的可能实现。它允许使用您描述的颜色/样式在当前缓冲区中突出显示自定义字符串。您选择突出显示的自定义字符串无法在Vim会话之间保存。
首先,为您的定制突出显示定义突出显示组SpecialTxt
:
au ColorScheme * hi SpecialTxt guibg=yellow guifg=red gui=bold,underline,italic
(请注意,这必须通过autocmd完成,以便加载新的colourscheme不会覆盖它。)
现在,您可以选择任何正则表达式来继承此颜色:
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>
希望有所帮助。如果它不是你想要的,那就道歉。