GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

jonathanslenders

pyvim – 純粋なPythonのVimのクローン

投稿日:

純粋なPythonのVimのクローン。

ピビム

PythonでのVimの実装

pip install pyvim

問題、質問、希望、コメント、フィードバック、発言? GitHubの問題を作成してください、私はそれを感謝します。

インストール

pipを使用してpyvimをインストールするだけです。

pip install pyvim

~/.bashrcを実際に使用したい場合は、 ~/.bashrc次の行を追加することをお勧めします。

alias vi=pyvim
export EDITOR=pyvim

良いもの

エディタはPythonで完全に書かれています。 (Cの拡張はありません)。 これにより、開発が大幅に高速化されます。 新しい機能を試作して統合するのは簡単です。

私たちはすでに多くの素敵なものを持っています。例えば:

  • Pygmentsレクサーを使用したファイルのシンタックスハイライト
  • タブページだけでなく、水平および垂直の分割。 (Vimに似ています)
  • prompt_toolkitのすべての機能 これには多くのViキーバインディングが含まれています。プラットフォームに依存せず、すべてのPythonバージョンでPython 2.6から3.4まで動作します。 それはまた、顕著なパフォーマンスの向上とPypyで実行されます。
  • いくつか:set ...コマンドは、 incsearchnumberignorecasewildmenuexpandtabhlsearchrulerpastetabstopように実装されています。
  • その他の作業コマンド: vsplittabnewonlybaddなど。
  • Pythonのソースコードの場合、自動補完機能は素晴らしいJediライブラリを使用し、コードチェックはPyflakesを通じて(非同期に)完了します。
  • Colorschemesは実行時に変更できます。

さらに、プロジェクトが開発されると、Pythonで拡張を記述し、Pythonをスクリプト言語として使用することも可能になります。 (例えば、vimscriptの代わりに。)

我々はまた、いくつかのクールなものを行うことができます。 たとえば、Pythonのasyncioイベントループでエディタを実行し、他のコルーチンがエディタとやりとりするようにします。

いくつかのスクリーンショット

独自のソースコードを編集する:

ウィンドウレイアウト(水平および垂直分割+タブページ)

PythonコードチェックのためのPyflakesとオートコンプリートのためのJedi:

他のcolorschemes:

中国語と日本語入力(ダブル幅文字):

pyvimの設定

カスタム設定用の.pyvimrcファイルを作成することは可能です。 この例を見てみましょう: pyvimrc

制限事項

改良されたViに比べて、Pyvimはいろいろな面でまだパワフルではありません。

  • prompt_toolkitは、バッファが複数のウィンドウで開かれているときにバッファに個々のカーソルを持たせない(またはまだしていない)。 現在、ファイルが2つのウィンドウに同時に表示されると、予期しない動作が発生します。 (カーソルが間違ったウィンドウに表示され、カーソルが動いたときに他のウィンドウがスクロールすることがあります)。これは将来修正される必要があります。
  • バッファのデータ構造は非常に簡単です。 (これはちょうどPythonの文字列であり、カーソル位置の整数です。)これは、開発や新しい機能の迅速なプロトタイプ作成には非常に効果的ですが、パフォーマンス上のペナルティが伴います。 システムによっては、ファイルが1000行を超え、構文の強調表示が有効になっていると、編集が目立つほど遅くなります。 (ボトルネックはおそらくBufferControlコードで、キーを押すたびにテキストをリフローさせ、強調表示のためにpygmentsを呼び出そうとします。これはPythonコードが1文字でループしています)。
  • ラインフォールディングやマクロなどの素晴らしいVim機能はまだ実装されていません。
  • Windowsのサポートはそれほど素晴らしいものではありません。 それは機能しますが、改善することができます。 (私は、ほとんどのWindowsユーザーはこのプロジェクトに興味がないと思っていますが、間違っていると思います。)

ロードマップ

ロードマップはありません。 私は主に私が必要とするものや興味のあるものを実装するか、あるいは私に勉強する機会を与えます。 しかし、新機能をリクエストするためにGitHubの問題を自由に作成してください。 プルのリクエストも歓迎します。 (私がそれをマージするかどうか不明な場合は、最初に議論するための問題を作成するかもしれません。)

たぶん、ある日、私たちはより大きなデータ構造(Rope)を持ち、本当に大きなファイルを開くことができます。 (良いアルゴリズムでは、PythonはCコードより遅くする必要はありません)。

多分、私たちはラインフォールディングを行い、おそらく編集をブロックするでしょう。 多分いつかは、Pythonデバッガやマウスのサポートを組み込むことになるでしょう。 我々は見るでしょう。 🙂

テスト

すべてのテストを実行するには、pytestをインストールします。

pytestをインストールする

そして、ルートのpyvimディレクトリから実行します:

py.test

サポートされているすべてのPythonバージョンに対してpyvimをテストするには、toxをインストールしてください:

pip install tox

そして、ルートのpyvimディレクトリから実行します:

toxコマンドを正常に実行するには、サポートされているすべてのバージョンのPythonをインストールしておく必要があります。

なぜPyvimを作成したのですか?

いくつかの理由があります。

主な理由は、Python prompt-toolkitライブラリを作成した後の小さなステップだったのかもしれません。 これは実際には単純に純粋なPythonのreadline置換であるライブラリですが、シンタックスの強調表示や複数行の編集といったいくつかの素晴らしい機能が追加されています。 フルスクリーン端末アプリケーション用のツールキットであることは決して意図されていませんでしたが、ある時点で私たちがエディタに必要なものすべてがそこにあり、私はそのデザインに挑戦することが好きでした。 だから、私はエディタを始めました。最初のコンセプトは数百行にすぎませんでしたが、すでにエディタとして働いていました。

pyvimの作成は、我々がprompt-toolkitための頑丈なアーキテクチャを持っていることを確認しますが、ライブラリの柔軟性を示すことも目的としています。 意味がpyvimば、 pyvim機能はprompt-toolkit戻ってくるので、Python REPLの方が優れています。 ptpython 、別のREPLを参照してください)。

とりわけ、エディタを作成するのは本当に面白いです。

代替案

確かに代替案を見てください:

Q&A:

Q
あなたは呪いを使っていますか?
A
いいえ、 prompt-toolkitのみを使用しprompt-toolkit

ありがとう

  • Vi改善、Bram Moolenaarによる。 インスピレーションのために。
  • Jediに、pyflakesとdocopt Pythonライブラリ。
  • ダブル幅文字のサポートのためのJeff QuastのPython wcwidthポート。
  • Guido van Rossumに、Pythonを作成してください。







-jonathanslenders

執筆者: