選択文字列をブログの編集フォームに貼り付けるvimプラグイン

はじめに

こんにちは、野村です。

今回は、文字列をブログの編集フォームにペーストするためのvimプラグインを紹介します。

前回作った、コマンド「wcpy」

「xsel」と「sed」を使ってHTMLソースをブログにペースト
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/&/\&amp;/g' \
    -e 's/</\&lt;/g' \
    -e 's/>/\&gt;/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ソースを含む文字列をブログ記事の編集フォームなどに貼り付けるときに便利です。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。