Vim エディタ用 MOD 開発システム・ソース・コード・シンタクス・ハイライタ

Post Reply
User avatar
tos1
Site Admin
Posts: 7
Joined: Mon May 13, 2024 7:05 am UTC

Vim エディタ用 MOD 開発システム・ソース・コード・シンタクス・ハイライタ

Post by tos1 »

Image

概要
このハイライタは、テキスト・エディタ Vim を使って Mount&Blade および Mount&Blade:Warband の MOD 開発システムのソース・コードを編集する際に、命令などを着色します(コンパイル済みの *.txt ファイルは対象ではありません)。MOD を開発したりソース・コードを読んだりする時に、コード内のオブジェクト(失敗可能な命令、tryブロック、レジスタ、変数、スロットなど)を簡単に識別できます。

色の変更や対象の追加など、カスタマイズは容易です。ハイライタのファイルの中を見ると、ほとんどの行は直感的に理解できます。また、必要に応じて Vim のヘルプ機能(:h)を使えば、より詳しい情報を確認できます。

(注: 日本語 Windows 環境ではディレクトリ階層の区切りに「¥」を使いますが、この説明文中ではバックスラッシュ「\」で表示されます。ここからコピペした時には「¥」に見えるはずです。)

スクリーンショット
画像セット1
Image
Image
Image
画像セット2
Image
Image
Image
Image
必要な環境
Vim (テキスト・エディタ)
(vim7.4 と vim9.1 でテスト済み)

Vim を使っていない、または最新バージョンに移行したい場合は、公式サイト https://www.vim.org/download.php からダウンロードして下さい。個人または趣味での使用であれば、署名なしの zip バージョン(例:64ビットWindows用 gvim_9.1.xxxx_x64.zip)をダウンロードするので充分でしょう。Windows レジストリへの登録などのインストールは不要です。

注: neovim ではテストしていません。Warband の MOD 開発には Vim エディタで充分でしょう。vim を使っていて具体的な問題が見つかってから neovim に切り替えても、遅くはないでしょう。既に neovim をお使いの場合は、このハイライタを neovim に移行して下さい。

このハイライタをインストールする前に、ファイルの種類に関係なく vim のシンタクス・ハイライト・モードが自動的にオンになるように gvimrc ファイルで設定しておくとよいです。Python ソースファイル (*.py) を開いた時に、vim が一部の単語や文字列に色付けしているなら、その設定は既に完了しています。

vim が *.py ファイルに色付けしない場合は、vim のインストールディレクトリにある gvimrc_example.vim を探し、それに従ってコピーして _gvimrc に名前を変更し、$VIM フォルダに配置して下さい。ここでの $VIM は環境変数として定義されているとは限りません。これは vim のインストールディレクトリを意味します。例えば、gvim.exe が c:\foo\vim\vim91\gvim.exe の場合、$VIM は c:\foo\vim です。_gvimrc を c:\foo\vim\_gvimrc のようなディレクトリに配置して下さい。その中で syntax on というコマンドが実行されることを確認して下さい。

ライセンス
このバージョンは、私(作者)へ通知せずに自由に使用、変更、再配布できます。ただし、新しいバージョンではこの限りではないかも。

免責事項
  • 自己責任で利用して下さい。私が作成したファイルにバグがあるかどうかに関わらず、使用の結果、あなた(およびあなたが継承して作った再配布物を使用した人たち)が被った損害、損失、眼の損傷、脳の損傷について、私は一切責任を負いません。
  • 変更の提案に必ず対応するとは限りませんが、受け付ける可能性はあります。ただし、特定の背景色で色が読みにくいという苦情には対応できません。そのような場合は個別にカスタマイズして下さい。
参考にした情報
https://gitlab.com/Earendil_Ardamire/header_operations
2021年11月21日頃に上記サイトに投稿された「拡張版 header_operations v.1.0.3」から、「can_fail_operations included」という Python リストを利用しました。このハイライタは、そのリストに含まれるかどうかに基づいて、失敗可能(Can-fail)命令とそうでない命令を見分けて色付けします。

-----------------------------------------------------------------------------------
ダウンロード
私が英語で書いたほうのページの Download という項にファイルがあります。


-----------------------------------------------------------------------------------

インストール方法

ダウンロードしたファイル一式には、同じ名前の mbmodsrc.vim ファイルが 2 つ含まれています。1 つはファイル・タイプ検出用、もう 1 つはハイライト用です。それぞれを下記のような適切なフォルダに配置して下さい。区別するには中身を見て下さい。短い方(数行)が検出用です。

ファイルタイプ検出用のファイルを、下記のディレクトリ位置に置く。
$VIMRUNTIME\ftdetect\mbmodsrc.vim

シンタクス・ハイライト用のファイルを、下記のディレクトリ位置に置く。
$VIMRUNTIME\syntax\mbmodsrc.vim

ここで $VIMRUNTIME は、vimのバージョンによって異なります。vim7.4 の場合は gvim.exe があるフォルダの子フォルダ(例:c:\foo\bar\vim74\vi74)です。vim9.1 の場合は gvim.exe があるフォルダ(例:c:\foo\vim\vim91)です。環境変数として定義されているとは限りません。詳細については、Vimで:h VIMRUNTIME コマンドを実行して確認して下さい。

ファイル・タイプ検出用ファイルの機能
  • module_*.py または header_*.py を開いたときに、この(modding 用の)シンタクス・ハイライト・ファイルを起動します。
  • 編集を開始したファイルの種類に関係なく、メニューの経路 [Syntax]-[M]-[MBmodSrc] が vim に追加されます。(ファイル内の 50.80.xxx のような数字はメニュー内の経路を指定します。現在のメニュー構造を確認するには、コマンド・モードで :menu を入力します。)
メニューから MBmodSrc を選択すると、現在編集中のファイルの種類に関係なく、M&B / M&B Warband MOD ソースの構文強調表示が適用されます。作業用の .txt ファイルにコードの一部を貼り付けた場合や、vim の配色(カラー・スキーム)を変更した場合に便利です。

または、以下のコマンドを入力することもできます。
:so $VIMRUNTIME/syntax/mbmodsrc.vim
一度入力すれば vim の履歴に残るので、2 回目以降は :so(または最近このコマンドを使用した場合は:sのみ、あるいは:のみ)と上矢印キー(1 回または必要な回数)だけで、簡単に再発行できます。


カスタマイズ

このセットの配色が気に入らない場合は、自由にカスタマイズして下さい。
文字色(前景色)や背景色を変更するには、所望の hi コマンドの行を見つけて、色を変更します。
hi コマンドに渡される構文ルールを変更するには、keyword、match、contained、contains、および「sy match」に指定する正規表現などの各パラメータを理解する必要があります。
編集中に現状のハイライト設定を確認するには、コマンド・モードで :hi を入力します。
vimの syntax フォルダにある他の既存ファイルが参考になります。

Vim のヘルプ機能

詳細については、Vim エディタのヘルプ機能で。例えば、以下のコマンドを入力し、/ を使って検索できます。ヘルプ・ウィンドウが分割表示されます。ヘルプを終了するには、ヘルプ側にカーソルがある時に :q と入力します。
:h sy
:h syn-keyword
:h syn-contains
:h syn-contained
:h hi
:h ftdetect

注意
  • このハイライタは、M&B / M&B Warband MOD 開発システムのソース・コード(*.py)用です。擬似コンパイルした出力の *.txt 用ではありません。
  • このハイライタは、あらゆる背景色で使用できることを保証するものではありません。「morning」(比較的明るい背景)と「blue」(比較的暗い背景)という 2 つの配色でテストしてあります。
  • 色の見え方はユーザによって異なり、モニター画面の違いや調整レベルによって色が異なって見える場合もあります。だから、完璧な組み合わせはありません。ご自身の目や環境に合わせてカスタマイズして下さい。
  • これはすべての開発者のニーズを満たすものではありません。開発者によっては module_dialogs.pyの 開始時会話状態(第 2 パラメータ)と終了時会話状態(第 5 パラメータ)を強調表示する必要があるかもしれません。その場合は、特定のファイルためのコードを syntax フォルダ内のハイライト用ファイルに追加して下さい。例:

Code: Select all

if expand('%:t') == "module_dialogs.py"
    " Write your code here.
endif
vim 初心者のかたへ

vi 系のテキストエディタに慣れていない場合は、ゲーム感覚で使える無料のオンライン・チュートリアル・サイトを探してみて下さい(アカウント作成や有料レベルへのアップグレードまでは不要です)。こうしたサイトでは、h、j、k、l キーを使ったカーソルの使い方から学ぶことができます。また、最短のキーストロークでカーソルを指定した位置にどれだけ速く移動できるかを測定するサイトもあります。vim の大きなメリットの一つを理解するのに役立ちます。

vim の仕様を詳しく知るには、vim 本体のチュートリアルを読み、help コマンドを利用するとよいです。gvim.exeを起動し、Escキーを1回押して、以下のコマンドを入力して下さい。
:h tutor
:h
vim7.4のtutorファイルはC:\....\vim74\vim74\tutor\、vim9.1の場合はC:\....\vim91\vim91\tutor\にあります。ご希望の言語コードをサフィックスに持つファイル(例えば日本語なら tutor.ja.*)を探します。コピーを作ってから それを空の vim にドラッグします。どのファイルを開いても おかしな文字がある場合は、エンコード設定を調整して下さい。(現在の設定を確認するには、 :set all と入力します。)

vi 系エディタの威力に気づいたら、きっとコマンド・プロンプトに代えて Unix 系や vi 系コマンドライン環境に置き換えたくなることでしょう。そうすれば、インライン・コマンド編集に h、j、k、l、/、n、cw、dw、i などを使えて、キー入力回数を減らすことができ、MOD 開発のためのツールを shell/sed/awk スクリプトなどを使って作ったりして作業効率を大幅に向上できます。翻訳作業用のツール作りにも便利です。Windows 上の Unix 系環境(Cygwin など)を探してみて下さい。(ただし、Windows のファイル・システムから完全に独立した環境だと、不便です。)
Post Reply