iPadでVim

iVimでZIPファイルを解凍・圧縮する方法

iVimでZIPファイルを解凍・圧縮する方法
記事内に広告が含まれています。
スポンサードリンク

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

‎iVim
‎iVim is a project that brings the vim editor to the iOS system. It is open source, please visit the App Support URL. Fo...

しかし、標準ではZIPコマンドを備えていない難点があります。

そこでこの記事では、iVimのPythonモジュールを利用して、ZIPファイルを圧縮・解答する方法について紹介します。

スポンサードリンク

ZIPファイルを解凍するスクリプト

Pythonモジュールを使えば、ivish に実装されていない ZIPコマンドと同様の処理も可能です。

import argparse
import zipfile

parser = argparse.ArgumentParser(description='Unzip for iVim')
parser.add_argument('infile', help='Target zip file')
parser.add_argument('outfile', help='Output file or directory path')
args = parser.parse_args()

with zipfile.ZipFile(args.infile) as f:
    f.extractall(args.outfile)

このスクリプトの仕様は省略しますが、次のように実行すればZIPファイルが解凍できます。

:!python3 unzip.py {解凍したいファイルパス} {解凍先ディレクトリパス}

解凍先のディレクトリは、存在しなくても作成してくれます。

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

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

ZIPファイルを圧縮するスクリプト

こちらもPythonモジュールを使って、ivish に実装されていない ZIPコマンドと同様の処理も可能を可能にします。

import argparse
import zipfile

parser = argparse.ArgumentParser(description='Zip for iVim')
parser.add_argument('infile', help='Target a file')
parser.add_argument('outfile', help='Output zip file')
args = parser.parse_args()

with zipfile.ZipFile(args.outfile, 'w', compression=zipfile.ZIP_DEFLATED) as f:
    f.write(args.infile, arcname=args.infile)

このスクリプトの仕様は省略しますが、次のように実行すればファイルを1つだけ圧縮できます。

:!python3 zip.py {圧縮したいファイルパス} {圧縮先ディレクトリパス}

単純な1ファイルのZIP圧縮にしか対応していません。複数ファイルの圧縮に対応させるには、もう少し工夫が必要です。

もし複数ファイルの圧縮が必要であれば、ロジックを工夫する必要がありますので、ご注意ください。

iVimで圧縮ファイルを解凍できると…?

GitHubなどからダウンロードしてきたファイルを直接解凍できるようになるため、PythonのトレーニングやVimプラグインのインストールが楽になります。

ちなみに、今回のファイルはこちらでも公開してますので、自由に利用してください。

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

ぜひ色んな使い方をして、iVimでモバイルVimライフを快適にできれば幸いです。

最後まで読んでいただいて、誠にありがとうございました。

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

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

\フォローする/
スポンサードリンク
関連記事