iPad で Pythonプログラミングをトレーニング/試行する環境として、iVim は便利です。
こちらで紹介した通り、Vimプラグインもインストールすることができます。
しかし、gitコマンドやzipコマンドを搭載していないため、プラグインのインストールには紹介したように手間がかかります。これでは Vim script や Python スクリプトの開発にはイマイチです。
そこでこの記事では、Pythonスクリプトを使って、iVim に GitHub から直接 Vim プラグインをインストールする方法について、ご紹介します。
iVim へ Vim プラグインをインストールするスクリプト
こちらのスクリプトを実行すれば、iVimへVimプラグインを簡単にインストールできます。
from urllib.request import urlretrieve
import argparse
import os
import ssl
import shutil
import zipfile
parser = argparse.ArgumentParser(description='Plugin Installer for iVim')
parser.add_argument('plugin_name', help='The plugin name of installing. eg. "xxx/yyy.vim"')
parser.add_argument('--opt', action='store_true', help='Install for option directory')
args = parser.parse_args()
# Download zip file from github.com
URL = f'https://codeload.github.com/{args.plugin_name}/zip/master'
TMPDIR = os.environ['TMPDIR']
DLFILE = TMPDIR + 'master.zip'
ssl._create_default_https_context = ssl._create_unverified_context
urlretrieve(URL, DLFILE)
# Unzip
UNZIPDIR = TMPDIR + 'master/'
with zipfile.ZipFile(DLFILE) as f:
f.extractall(UNZIPDIR)
# Copy plugin files to iVim plugin directory
PLUGDIRNAME = os.listdir(UNZIPDIR)[0]
PACKDIR = os.environ['HOME'] + '/.vim/pack/'
CUSTOMDIRNAME = os.listdir(PACKDIR)[0]
if args.opt:
TARGET = PACKDIR + CUSTOMDIRNAME + '/opt/'
else:
TARGET = PACKDIR + CUSTOMDIRNAME + '/start/'
if os.path.isdir(TARGET + PLUGDIRNAME):
shutil.rmtree(TARGET + PLUGDIRNAME)
res = shutil.move(UNZIPDIR + PLUGDIRNAME, TARGET)
print(f'Plugin installed to "{res}".')
# Clean up temporary files
os.remove(DLFILE)
shutil.rmtree(UNZIPDIR)
下記からもダウンロードできます。
このスクリプトを配置したディレクトリで、次のように実行します。
python3 pluginInstall.py {プラグイン名} (:terminalの場合) :!python3 pluginInstall.py {プラグイン名} (iVimから直接実行する場合その1) :py3file pluginInstall.py {プラグイン名} (iVimから直接実行する場合その2)
非常にチープで最低限の動作しかしませんが、それでも GitHub からなら直接プラグインのインストールをすることができます。
ちなみに、通常は ~/.vim/pack/{任意のディレクトリ}/start にインストールしますが、次のように実行すれば ~/.vim/pack/{任意のディレクトリ}/opt にもインストールでき、任意のタイミング(:packaddコマンド実行時)に読み込むことができます。
python3 pluginInstall.py --opt {プラグイン名} (:terminalの場合) :!python3 pluginInstall.py --opt {プラグイン名} (iVimから直接実行する場合その1) :py3file pluginInstall.py --opt {プラグイン名} (iVimから直接実行する場合その2)
iVim へ Vim プラグインをアンインストールするスクリプト
こちらのスクリプトを実行すれば、iVimからVimプラグインを簡単にアンインストールできます。
import argparse
import os
import shutil
parser = argparse.ArgumentParser(description='Plugin Remove for iVim')
parser.add_argument('plugin_name', help='The plugin name of removing. eg. "xxx/yyy.vim"')
args = parser.parse_args()
# Set plugin directories
PLUGDIRNAME = args.plugin_name.split("/")[1] + '-master'
PACKDIR = os.environ['HOME'] + '/.vim/pack/'
CUSTOMDIRNAME = os.listdir(PACKDIR)[0]
STARTDIR = PACKDIR + CUSTOMDIRNAME + '/start/'
OPTDIR = PACKDIR + CUSTOMDIRNAME + '/opt/'
NOTFOUND = False
if os.path.isdir(STARTDIR + PLUGDIRNAME):
shutil.rmtree(STARTDIR + PLUGDIRNAME)
print(f'Plugin removed "{args.plugin_name}".')
elif os.path.isdir(OPTDIR + PLUGDIRNAME):
shutil.rmtree(OPTDIR+ PLUGDIRNAME)
print(f'Plugin removed "{args.plugin_name}".')
else:
print(f'Plugin was not founded.')
このスクリプトを配置したディレクトリで、次のように実行します。
python3 removePlugin.py {プラグイン名} (:terminalの場合) :!python3 removePlugin.py {プラグイン名} (iVimから直接実行する場合その1) :py3file removePlugin.py {プラグイン名} (iVimから直接実行する場合その2)
pluginのフォルダからディレクトリごと削除しているだけですが、これで充分だと思います。
iVimを便利に使うために
こちらも併せて利用すれば、より便利に iVim を利用できるはずです。
https://vim.blue/ivim-zip-unzip/
ぜひ色んな使い方をして、iVimでモバイルVimライフを快適にできれば幸いです。