iPad で Pythonプログラミングをトレーニング/試行する環境として、iVim は便利です。
この記事では、Python環境としての素性や利用可能なモジュールについて、ご紹介します。
iVimに実装されているPython
次の画像をご覧いただければ分かる通り、執筆時点の最新版 iVim 2.13 では Python 3.7.1 が実装されています。
ということは、Python3 で動作する Vim プラグインやPythonスクリプトは動作する可能性があります。
iVimに同梱されているPythonモジュール
iVimに実装されているPythonでは、次のモジュールが同梱されています。
a | heapq | shelve |
abc | hmac | shlex |
aifc | html | shutil |
antigravity | http | signal |
argparse | idlelib | site |
array | imaplib | smtpd |
ast | imghdr | smtplib |
asynchat | imp | sndhdr |
asyncio | importlib | socket |
asyncore | inspect | socketserver |
atexit | io | sqlite3 |
audioop | ipaddress | sre_compile |
b | itertools | sre_constants |
base64 | json | sre_parse |
bdb | keyword | ssl |
binascii | lib2to3 | stat |
binhex | libzmq | statistics |
bisect | linecache | string |
builtins | locale | stringprep |
bz2 | logging | struct |
cProfile | lzma | subprocess |
calendar | macpath | sunau |
cgi | mailbox | symbol |
cgitb | mailcap | symtable |
chunk | marshal | sys |
cmath | math | sysconfig |
cmd | mimetypes | syslog |
code | mmap | tabnanny |
codecs | modulefinder | tarfile |
codeop | msilib | telnetlib |
collections | multiprocessing | tempfile |
colorsys | netrc | termios |
compileall | nntplib | textwrap |
concurrent | ntpath | this |
configparser | nturl2path | threading |
contextlib | numbers | time |
contextvars | opcode | timeit |
copy | operator | tkinter |
copyreg | optparse | token |
crypt | os | tokenize |
csv | parser | trace |
ctypes | pathlib | traceback |
curses | pdb | tracemalloc |
dataclasses | pickle | tty |
datetime | pickletools | turtle |
dbm | pip | turtledemo |
decimal | pipes | types |
difflib | pkg_resources | typing |
dis | pkgutil | unicodedata |
distutils | platform | unittest |
doctest | plistlib | urllib |
dummy_threading | poplib | uu |
easy_install | posix | uuid |
posixpath | venv | |
encodings | pprint | warnings |
ensurepip | profile | wave |
enum | pstats | weakref |
errno | pty | webbrowser |
faulthandler | pwd | wheel |
fcntl | py_compile | wsgiref |
filecmp | pyclbr | xdrlib |
fileinput | pydoc | xml |
fnmatch | pydoc_data | xmlrpc |
formatter | pyexpat | xxlimited |
fractions | queue | xxsubtype |
ftplib | quopri | zipapp |
functools | random | zipfile |
gc | re | zipimport |
genericpath | reprlib | zlib |
get-pip | resource | |
getopt | rlcompleter | |
getpass | runpy | |
gettext | sched | |
glob | secrets | |
grp | select | |
gzip | selectors | |
hashlib | setuptools |
ある程度の標準的なPythonモジュールはインストールされているように見えます。しかし…
iVimのPythonモジュール
iVim 2.13 から pip コマンドが利用できるようになりました。
そのため、いくつかのモジュールはインストールできるようになりました。
頻繁に利用するモジュールを利用したい方は、ローカルに tar モジュールを持ってくるなどの工夫が必要でしょう。
また、標準モジュールの方が動作が安定しているようです。そのため、下記のようなスクリプトを持っておくと良いでしょう。
Pythonを使ってiVimでファイルをダウンロード
Python でファイルダウンロードはできなくはありません。次のように urllib で実行できます。
from urllib.request import urlretrieve
import ssl
import argparse
parser = argparse.ArgumentParser(description='Downloader for iVim')
parser.add_argument('url', help='To get file from this URL.')
parser.add_argument('filepath', help='File path of downloaded file')
args = parser.parse_args()
ssl._create_default_https_context = ssl._create_unverified_context
urlretrieve(args.url, args.filepath)
このスクリプトは、こちらでも公開しています。
このスクリプトの仕様は省略しますが、次のように実行すればファイルがダウンロードできます。
:!python3 get.py {ダウンロードしたいファイルのURL} {保存するファイル名(ファイルパス)}
get.py の部分は配置しているファイルパスに合わせてください。
また、URLは http:// や https:// などをキチンと付けた正しいURLでなければエラーとなる点は注意してください。
単発なら curl コマンドでも良いですが、大量実行したりするには便利ですね。色々できそうです。
Pythonを使ってiVimでZIPファイルを解凍する
iVimには zip コマンドが実装されていません。そのため、普通にはZIPファイルを解凍できないという弱点があります。
しかし、PythonスクリプトであればZIPファイルを解凍することができます。こちらは次の記事で解説しています。
iVim + Python
標準的な環境は揃っているといえるわけです。
rootで作業できるわけではないですし、gitなどの今時必須のコマンド/モジュールもありません。しかし、ユーザーとして動かせる範囲では色々できそうですね。
モバイルでのトレーニング環境やちょっとしたスクリプトを試す環境にはうってつけですから、ぜひ有効に活用したいものです。
最後まで記事を読んでいただいてありがとうございました。