はじめに
こんにちは、野村です。
今回は、文字列をブログの編集フォームにペーストするためのvimプラグインを紹介します。
前回作った、コマンド「wcpy」
htmlソースを含む文字列をブログに貼り付けても正常に表示できません。特定の文字を置換しないといけない。面倒です。そこをなんとかする独自コマンドを作ってみました。
のvimプラグイン版です。
コマンド「wcpy」は、ファイル全体をペースト可能な文字列に置換した状態でクリップボードに収めるものでした。
今回のものは「選択範囲内の文字列をペースト可能な状態に置換した上でクリップボードに収める」vimプラグインです。
なお、このスクリプトは、python3、sed、xselを利用します。
準備
xselがなければインストールしてください(debianの場合)。
# apt install xsel
スクリプト
フォルダ「~/.vim/plugin/」の中に「ZZZ.vim」というファイルを作成し、以下の内容を記述します。
function! ZZZ#wcpy() :let tmp = @@ :silent normal gvy :let selected = @@ :let @@ = tmp python3<<EOF import vim import subprocess import os slc = vim.eval("selected") subprocess.call('touch /tmp/wcpy.txt', shell=True) f = open('/tmp/wcpy.txt', 'w') f.write(slc) f.close() cmd = ''' sed -e 's/&/\&/g' \ -e 's/</\</g' \ -e 's/>/\>/g' \ -e 's/\t/ /g/' \ /tmp/wcpy.txt | xsel -bi ''' subprocess.call(cmd, shell=True) os.remove('/tmp/wcpy.txt') EOF endfunction
使い方
vimでファイルを開き、ヴィジュアルモードで範囲選択をした後、コマンドモードで以下のコマンドを実行します。
:call ZZZ#wcpy()
ブログの編集フォームへペースト可能な状態に置換された文字列がクリップボードに収まります。
最後に
以上、選択した文字列をブログの編集フォームにペーストするためのvimプラグインを紹介しました。
python3を使わなくても作れる気がしたのだけど、やはりvimスクリプトは難解で手がつけられなかった。
次回は、クリップボード内の特定の文字列を置換するコマンドを作ってみます。
今回は、クリップボード内の特定の文字を置換するコマンドの作り方を紹介します。htmlソースを含む文字列をブログ記事の編集フォームなどに貼り付けるときに便利です。
というわけで、今回はこれにて。