有一个Vim插件来预览markdown文件吗?[关闭]


69

我喜欢带有标记的Mou编辑器,它们具有即时预览渲染结果的强大功能。所以我想知道,是否有办法在Vim中做同样的事情?


@TechliveZheng太好了!我要检查一下
mko,2012年

这不是您要的,但是如果您还不知道,请签出Voom,这是一个与markdown(:voom markdown)一起使用的大纲视图。它比动态渲染器有用,因为它使您可以在文档标题周围进行搜寻。
naught101 2014年

所有执行此操作的Vim插件似乎都需要一些外部程序,例如Python,Ruby,Javascript或Rust。我更喜欢euclio / vim-markdown-composer,它是在后端的Rust中编写的,并允许使用pandoc和生成器。在大多数情况下,它是可以正常工作的(需要安装Rust,然后进行进一步的编译,但是在重新启动后可以正常工作)。它是那么这是对我来说最重要的事情。
icc97

Answers:


43

我最近发现了一个Chrome扩展程序,该扩展程序使Chrome能够正确打开并显示markdown文件:Markdown预览

然后,只需在Vim中映射键以使用Chrome打开文件即可。我的看起来像这样:

" Open markdown files with Chrome.
autocmd BufEnter *.md exe 'noremap <F5> :!start C:\Users\tomas\AppData\Local\Google\Chrome\Application\chrome.exe %:p<CR>'

当然,如果您的文件不具有“ .md”扩展名,您希望将映射映射到其他键或Chrome位于其他位置,则必须编辑此命令。

现在,无论何时我在编辑“ .md”文件时,都可以点击<F5>以在Chrome中打开该文件。完美的解决方案是让Chrome每隔几秒钟自动重新加载,但是我似乎找不到适合本地文件的扩展名。


优点:

  • 无需单击任何正在运行的服务器或特殊代码,即可单击按钮预览降价文件。
  • 在支持Vim和Chrome的所有平台上均可使用-几乎涵盖了所有平台。

缺点:

  • 没有自动刷新,您<F5>每次要预览文件时都必须点击。
  • 没有Github风格的降价促销。

1
您可以使用Chrome中的LiveReload扩展来缓解“不自动刷新”的问题,但是,缺少GitHub风格对我来说是一个障碍。
2013年

@twomm:我找不到可以在本地文件上使用的扩展名。
2013年


6
提示:不要忘记允许markdown插件读取chrome扩展列表中的文件。
Bentley4 2014年

3
对于Mac,这是相同的命令:autocmd BufEnter * .md exe'noremap <F5>:!/ Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome%:p <CR>'
owise1 2014年

64

您很幸运-我刚刚编写了带有实时Markdown预览功能的vim插件。它也使用github Markdown和样式:https : //github.com/suan/vim-instant-markdown


1
我刚刚偶然发现了您的插件,并且非常喜欢这个概念。遇到一些麻烦-您可以看看stackoverflow.com/questions/9321327/…并说,它也可以在Windows上运行吗?
Rook 2012年

2
这很酷,但不幸的是,编辑器变得很懒,跳过了键盘按键。
Ciryon

3
设置真的很复杂,不适用于OSX。
Intents

我喜欢它会自动打开,自动刷新(甚至不保存)并在我关闭文件时自动关闭预览的事实!
aharris88 '16

请与我们联系neovim
汤姆·黑尔

15

实际上,您可以使用pandoc编译为您选择的文档格式,并使用外部默认命令查看它。例如,我想将其预览为pdf,并在Ubuntu上使用以下设置。

" pandoc , markdown
command! -nargs=* RunSilent
      \ | execute ':silent !'.'<args>'
      \ | execute ':redraw!'
nmap <Leader>pc :RunSilent pandoc -o /tmp/vim-pandoc-out.pdf %<CR>
nmap <Leader>pp :RunSilent gnome-open /tmp/vim-pandoc-out.pdf<CR>

我使用编译文档,pc并使用预览,pp。由于在ubuntu中evince是默认查看器,会自动加载更改的文件。你最终只会做,pc做一些更改以反映出来。

PS:我已将Leader映射到,


13

我使用Marked.app预览Markdown文件。并已映射<leader>p以进行预览:

function! s:setupMarkup()
  nnoremap <leader>p :silent !open -a Marked.app '%:p'<cr>
endfunction

au BufRead,BufNewFile *.{md,markdown,mdown,mkd,mkdn} call s:setupMarkup()

如果您不想在Marked.app上投入$ 4,则可以尝试Hammer.vim。将行更改为:

map <buffer> <leader>p :Hammer<CR>

5

添加到@Codemonkey的答案中,如果您使用的是OSX,则可以在.vimrc文件中使用以下内容。

" Open markdown files with Chrome.
autocmd BufEnter *.md exe 'noremap <F5> :!open -a "Google Chrome.app" %:p<CR>'

4

不,有几个Vim插件可用于语法突出显示,摘要等,但是Vim仅显示文本和文本,因此您不能在Vim中具有Markdown(或任何其他类型的)预览

如果您对实时预览感兴趣,那么MarkdownPad可能会更适合您的需求。


3
不正确,正如@Suan已经提到的那样,有vim-instant-markdown可以提供vim的实时markdown预览。安装有点麻烦,但可以!
chutsu

4
@chutsu:不正确:vim-instant-markdown的预览不是在vim内而是在浏览器内
Hotschke 2013年

2
我不认为这是预览的要求已经在vim中表现出来,只是它可以控制和更新活力。
2014年

3

这是一个简单的vim插件,用于在Chrome中查看Markdown-它不需要红宝石或其他任何花哨的东西,并且在您写入vim缓冲区时可以刷新预览(也可以通过热键激活)

而且,预览在后台进行,因此您不必离开vim。

https://github.com/JamshedVesuna/vim-markdown-preview


我的文档通常很长,无法容纳在单个页面中。刷新浏览器后,通常我将其带到md文件的顶部,而我正在远离.md文件的顶部进行编辑。该插件是否以某种方式知道上次编辑的位置,并在.md页面中预览该位置?
alpha_989 '17


1

我的.vim目录中有一个函数:

function! markdown#preview()
  silent update
  let output_name = tempname() . '.html'

  let file_header = ['<html>', '<head>',
        \ '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">',
        \ '<title>'.expand('%:p').'</title>',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-min.css">',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssbase/base-min.css">',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssfonts/fonts-min.css">',
        \ '<style>body{padding:20px;}div#container{background-color:#F2F2F2;padding:0 20px;margin:0px;border:solid #D0D0D0 1px;}</style>',
        \ '</head>', '<body>', '<div id="container">']

  call writefile(file_header, output_name)

  silent exec '!markdown "' . expand('%:p') . '" >> "' . output_name . '"'

  silent exec '!echo "</div></body></html>" >> "' . output_name . '"'

  silent exec '!sensible-browser "' . output_name . '" &'
endfunction

这样我也有以下映射:

inoremap <buffer> <F7> <ESC>:call markdown#preview()<CR>
nmap <buffer> <F7> :call markdown#preview()<CR>

它不是完美的,不是实时的,但足以满足我有限的需求。


借助它和浏览器中的自动重新加载插件,两个并排的窗口...
Zsolt Botykai 2012年

@lucapette-该功能基本上是Nate Silva的插件,不是吗?blog.natesilva.com
Rook

@Idigas老实说,我不记得我在哪里获得该功能的。虽然,这是我第一次浏览该网站。
lucapette 2012年

@lucapette-我的错,我不是在指责,只是注意到了相似之处(雅虎CSS吸引了我的注意)。一个简单的问题,您是否知道可以使用自己的CSS的markdown插件?
Rook 2012年

@Idigas不,不。没问题,真的。只是我不记得我从哪里得到的事实。顺便说一句,我没有搜索太多,所以我不知道。也许还有插件的空间...
lucapette 2012年

1

我碰到一个不错的插件,伟大的工作开箱来到https://github.com/waylan/vim-markdown-extra-preview


我的文档通常很长,无法容纳在单个页面中。刷新浏览器后,通常我将其带到md文件的顶部,而我正在远离.md文件的顶部进行编辑。该插件是否以某种方式知道上次编辑的位置,并在.md页面中预览该位置?
alpha_989 '17

这不是我的插件,我建议与项目维护者进行沟通
katzmopolitan

0

我认为在vim中预览markdown并不是一个好主意。但是您只需输入即可转换HTML中的markdown %!markdown,大概是您已经安装了markdown。然后保存该文件并在浏览器中打开它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.