Vim で CoqIDE みたいに書けるプラグイン Coquille の改良版を作ったよ.
スクリーンショット
内容は適当です.
VS
検索すると,いくつか Coq のための Vim Plugin が見つかります.
- the-lambda-church/coquille
- fork元のプラグインです
- pythonに依存しています.なんか無限ループしたりしていて,書き換えようと思いました
- vim-scripts/CoqIDE
- 試した気がするけど忘れました
- eagletmt/coqtop-vim
- 後で検索したら見つけました
- jvoorhis/coq.vim
- シンタックスハイライトが含まれています.
- 元の the-lambda-church/coquille にも含まれています
- LumaKernel/coquille には改良して,いまも改良中のものが入っています
特徴
- 必要なのは Vim と Coq のみ
- 複数のバッファを同時に開ける
- Admitted. などのハイライトあり
- GUIのVIMなら背景色から自動で色を決める
- 非同期
- (fork元に対して) バグがかなり修正されている
- 複数の Coq のバージョンに対応
- 最新の Coq 8.11 (beta) や Coq 8.10 など
- Coq 8.6 なども
- Coq 8.5pl3 とかいうのも
- もっと古いのはビルドわからなかったので試してない… あとで Actions に追加しようとは思います
キーボードをグチャグチャガチャガチャやっても耐えます.
逆にガチャガチャやってぶっ壊せたら Issue どんとこいという感じです.
( Issue は気軽にください )
インストール
プラグインマネージャを使っている場合は, LumaKernel/coquille
を追加してください.
もしくは自分で runtimepath
の参照先のどこかに clone してください.
dein.vimでの例
TOMLファイルを使っている場合は,以下を追加してください.
[[plugins]]repo="LumaKernel/coquille"on_ft="coq"
基本的な使い方
- Coqファイル (
.v
) を開きます :CoqLaunch
を実行します- もしくは
.vimrc
にlet g:coquille_auto_launch=1
とかけば自動で.v
ファイルのときにセットアップします
- もしくは
- 自動でInfos/Goals という名前のウィンドウが現れます
- 以下のコマンドを使って証明を進めます
:CoqNext
:CoqBack
:CoqToCursor
:CoqToLast
CoqIDEみたいな感じで使えます.他にもコマンドはあります.詳しくは :help coquille-commands
を見てください. (まだ日本語のヘルプはないです…)
これらのコマンドは Infos/Goals バッファでも使うことができます.
デフォルトではマッピングは存在しません.
マッピングの例
例えば,以下のように .vimrc
に書きます.
function! MyCoqMaps()
nnoremap <silent><C-C>:CoqLaunch<CR>
nnoremap <silent><Leader>j:CoqNext<CR>
nnoremap <silent><Leader>k:CoqBack<CR>
nnoremap <silent><Leader>l:CoqToCursor<CR>
nnoremap <silent><Leader>G :CoqToLast<CR>
nnoremap <silent><Leader>g:CoqRerun<CR>
nnoremap <silent><Leader>t:MoveToTop<CR>
nnoremap <silent><Leader><F5>:CoqRefresh<CR>
nnoremap <Leader>compute :CoqQuery Compute .<Left>
nnoremap <Leader>print :CoqQuery Print .<Left>
nnoremap <Leader>check:CoqQuery Check .<Left>
nnoremap <Leader>se:CoqQuery Search ().<Left><Left>endfunction
augroup my_coq
au!auFileType coq :call MyCoqMaps()
augroup END
<buffer>
(mapコマンドのオプション) はあってもなくてもいいと思います.
ハイライトの設定
GUIであれば,背景色から自動で計算するので,基本的には大丈夫だとは思います.
以下は,cterm環境で,カラースキーム hybrid
を使っていることを想定した設定例です.
hi CoqChecked ctermbg=17hi CoqCheckedAxiom ctermbg=58hi CoqQueued ctermbg=22hi CoqMarkedWarn ctermbg=64hi CoqCheckedWarn ctermbg=64hi CoqMarkedError ctermbg=160hi CoqCheckedError ctermbg=160
F.A.Q.
Infos/Goals ウィンドウがごちゃごちゃしちゃった
- 必要のない,
[Goals]
,[Infos]
みたいな名前のバッファに対して,:bdelete
をします.:CoqStopAll
を使えば楽です
:CoqRearrange
を実行しますone_window
オプションを特に設定していない場合は,すべての.v
ファイルでやります
裏で動いてるかもしれないプロセスとか含めてきれいに止めたい
:CoqStopAll
デフォルトでないところにインストールした Coq を使いたい
パスが通っていない場合は,以下のように設定します.
letg:coquille_coq_executable='/c/Coq8.10/bin/coqidetop'
これは Windows で MSYS2 を使っているような状況を想定しています.
詳しくは
もしくは :help coquille
Vimプラグインを書くことに関するあれこれを書くかもしれない