iPadでVim

iVimへGitHubから直接プラグインをインストールする方法

iPad で Pythonプログラミングをトレーニング/試行する環境として、iVim は便利です。

‎iVim
‎iVim is a project that brings the vim editor to the iOS system. It is open source, please visit the support URL. Font management Besides some system and emb...

こちらで紹介した通り、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)

下記からもダウンロードできます。

vimtry1/ivim-tools
iV. Contribute to vimtry1/ivim-tools development by creating an account on GitHub.

このスクリプトを配置したディレクトリで、次のように実行します。

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)

:py3file コマンドでも動作するかもしれませんが、ちょっと動きが怪しいので :!python コマンドで実行することをお薦めします。

また、エラー処理などはスクリプトに含んでいませんので、利用頻度などに応じて改変されることをお勧めします。

autoloadディレクトリなど、pluginディレクトリ以外のファイルを読み込む前提にしているプラグインは動作時にエラーが出るケースがあります。その場合は、.vimrcなどで個別に読み込む設定を書いてあげる必要があります。

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ライフを快適にできれば幸いです。

プロフィール
管理人
Vim太郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

\フォローする/
\ シェアする /
\フォローする/
関連記事
Vim入門
タイトルとURLをコピーしました