quickrunで実行コマンドを複数設定して, 自由に切り替える (Markdownを例に)

# はじめに

https://github.com/thinca/vim-quickrun

quickrunでは, FileTypeによっては, デフォルトで
複数の実行コマンドが登録されていて, 優先順位が設定されている.
その設定を変更・追加する.


# デフォルトの設定

例えば, Ver. 0.60では, Markdownの設定は下記のようになっている ([316~339行目](https://github.com/thinca/vim-quickrun/blob/v0.6.0/autoload/quickrun.vim#L316)あたり).
ここで, Markdownの実行コマンドの優先順位は,

> Markdown.pl, kramdown, bluecloth, redcarpet, pandoc

となっている.

```vim:vim-quickrun/autoload/quickrun.vim
let g:quickrun#default_config = {
~ 中略 ~
\ 'markdown': {
\   'type': executable('Markdown.pl') ? 'markdown/Markdown.pl':
\           executable('kramdown') ? 'markdown/kramdown':
\           executable('bluecloth') ? 'markdown/bluecloth':
\           executable('redcarpet') ? 'markdown/redcarpet':
\           executable('pandoc') ? 'markdown/pandoc': '',
\ },
\ 'markdown/Markdown.pl': {
\   'command': 'Markdown.pl',
\ },
\ 'markdown/bluecloth': {
\   'command': 'bluecloth',
\   'cmdopt': '-f',
\ },
\ 'markdown/kramdown': {
\   'command': 'kramdown',
\ },
\ 'markdown/pandoc': {
\   'command': 'pandoc',
\   'exec': '%c --from=markdown --to=html %o %s %a',
\ },
\ 'markdown/redcarpet': {
\   'command': 'redcarpet',
\ },
~ 中略 ~
}
```


# 設定の変更・追加

下記のように実行コマンドを追加し, 優先順位を変更したいとする.

> mdown (gh-markdown-cli), pandoc, multimarkdown, MultiMarkdown.pl, rdiscount, bluecloth, markdown, Markdown.pl, redcarpet, kramdown

また, 出力先をウェブ・ブラウザに変更する.
この場合, 以下を`~/.vimrc`に追記する.

```vim:~/.vimrc
let g:quickrun_config = {
\
\    'markdown': {
\
\      'outputter': 'browser',
\
\      'type':
\              executable('mdown')            ? 'markdown/mdown':
\              executable('pandoc')           ? 'markdown/pandoc':
\              executable('multimarkdown')    ? 'markdown/multimarkdown':
\              executable('MultiMarkdown.pl') ? 'markdown/MultiMarkdown.pl':
\              executable('rdiscount')        ? 'markdown/rdiscount':
\              executable('bluecloth')        ? 'markdown/bluecloth':
\              executable('markdown')         ? 'markdown/markdown':
\              executable('Markdown.pl')      ? 'markdown/Markdown.pl':
\              executable('redcarpet')        ? 'markdown/redcarpet':
\              executable('kramdown')         ? 'markdown/kramdown':
\              '',
\
\    },
\
\    'markdown/mdown': {
\      'command': 'mdown',
\      'exec': '%c -i %s',
\    },
\
\    'markdown/multimarkdown': {
\      'command': 'multimarkdown',
\    },
\    'markdown/MultiMarkdown.pl': {
\      'command': 'MultiMarkdown.pl',
\    },
\
\    'markdown/rdiscount': {
\      'command': 'rdiscount',
\    },
\
\    'markdown/markdown': {
\      'command': 'markdown',
\    },
\
\ }
```


# 実行コマンドの確認

MarkdownファイルをVimで開いた後に, 実際に選択されたコマンドは, 以下で確認できる.

```vim
:echo g:quickrun_config.markdown.type
```

または,

```vim
:echo g:quickrun_config['markdown']['type']
```


# 実行コマンドの切替

実行コマンドは, 例えば以下のようにして切り替えることができる.

```vim
:let g:quickrun_config.markdown.type = 'markdown/pandoc'
```

または,

```vim
:let g:quickrun_config['markdown']['type'] = 'markdown/pandoc'
```

さらに, unite-quickrun_configを用いて, `Unite`で切り替えることもできる.

http://d.hatena.ne.jp/osyo-manga/20120830/1346330114


# 参考

https://vim-jp.org/vim-users-jp/2011/09/15/Hack-230.html

http://d.hatena.ne.jp/osyo-manga/20120705/1341478162