WordPressへの投稿は、Vim + Vimrepressプラグインという環境で書いております。
Markdownで、Vimで、書けるので幸せなのですが、HTMLタグやMarkdown記述をより簡単に行いたい。
というわけで、今回はVimで定型文記述を簡単にするNeosnippetプラグインを導入して、よりブログ投稿しやすい環境を構築します。
Neosnippetを導入してHTML,Markdownを書きやすくする
VimのプラグインNeosnippetを早速導入しましょう。各自お使いのプラグインマネージャ等で導入。NeoBundleなら以下の2行です。
NeoBundle 'Shougo/neosnippet'
NeoBundle 'Shougo/neosnippet-snippets'
Snippet用ショートカット設定は、ドキュメントどおりに以下の設定。
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
imap <expr><TAB>
\ pumvisible() ? "\<C-n>" :
\ neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
これで、<Ctrl+k>
でスニペットの展開、Tabで入力箇所へカーソル移動などが行われるようになります。NeoComleteなどが導入されていれば、補完候補としても表示されます。
これで準備は完了。簡単。
HTML用のSnippetは
.vim/bundle/neosnippet-snippets/neosnippets/html.snip
Markdown用のSnippetは
.vim/bundle/neosnippet-snippets/neosnippets/markdown.snip
これでfiletypeがhtmlやmarkdownファイルであれば、ファイルの中身のsnippetに書いてあるワードを打ち込んで<Ctrl+k>
で同様に展開できます。
Vimrepressで開いたバッファでSnippetを使う
Vimrepressで投稿を書く場合、:BlogNew
などで作成されるバッファは、filetypeはhtmlでもmarkdownでもありません。htmlのsにペットも、markdownのスニペットも有効にはなりません。そのため以下のautocmd設定をすることで、強制的にスニペットを有効にします。
autocmd Syntax md_blogsyntax NeoSnippetSource $HOME/.vim/bundle/neosnippet-snippets/neosnippets/markdown.snip
autocmd Syntax md_blogsyntax NeoSnippetSource $HOME/.vim/bundle/neosnippet-snippets/neosnippets/html.snip
Vimrepressで作成されるバッファには、filetypeは設定されませんが、syntaxがmd_blogsyntax
が設定されます。これを利用してautocmdイベントを作成します。
これで、Vimrepressのバッファでもhtml,markdownのスニペットが有効になります。
独自のsnippetを追加する
html,markdownのデフォルトのsnippetでも多くの雛形が用意してあり有用ではあるのですが、結構多くつかう、画像挿入などの雛形は
snippet alturltitle
abbr ![alt](url "title")
options word
![${1:#:alt}](${2:#:url} "${3:#:title}")${4}
当然自分のサイトURLなどは手打ちになるわけですよね。それじゃあ意味がない。ということで自分専用のsnippetを導入しましょう。
導入方法は簡単で、インストール済みのsnippetと同様のフォーマットのファイルを作って読み込むだけです。
僕は、$HOME/vimfiles/snippets/myweb.snip
というファイルを作って、
snippet flt_img
alias f_i
![${1:#:text}](https://freelifetech.com/hogehoge/${2:#:url} "${3:#:title}")
こんな感じのスニペットを作っています。
このsnippetの有効化は、既存のファイルと同じようにして読み込みます。
autocmd Syntax md_blogsyntax NeoSnippetSource $HOME/vimfiles/snippets/myweb.snip
以上、VimrepressにNeosnippetを加えて、Vimでブログを書きやすくする環境構築でした。
コメント