4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Obsidianの<C-d>問題の解決を少し前に進めた

Last updated at Posted at 2021-01-01

背景

ObsidianのVimモードで問題をなんとかしようとおもっていろいろやってみたという記事で書いた通り、

  • Obsidianというメモアプリがすばらしい
  • Vimの挿入モードで<C-d>を右一文字削除にしたいが、うまく設定できなくて困った
  • Vimrc Supportプラグインの作者に相談すると「CodeMirrorのバグだとおもうから、バグレポートするといいとおもうよ」といわれたけど、待ってるのもやだ
  • ので、main.jsを直接書き換えた

これで(個人的には)満足していたのだけれど、Vimrc Supportプラグインの作者に「もう少し一般化すると、他の人も助かるなあ」といわれたので、パッチを送った。

改訂の要点

main.jsの、CodeMirror.Vim.defineOption('tabstop')vimCommands.split("\n").forEach()のあいだに、CodeMirror.Vim.defineEx('iunmap')を追加

main.js
CodeMirror.Vim.defineOption('tabstop', 4, 'number', [], function (value, cm) {
    if (value) {
        cmEditor.setOption('tabSize', value);
    }
}); // ←ココ!
CodeMirror.Vim.defineEx('iunmap', '', function (cm, params) {
    if (params.argString.trim()) {
        CodeMirror.Vim.unmap(params.argString.trim(), 'insert');
    }
});
vimCommands.split("\n").forEach(function (line, index, arr) {
    if (line.trim().length > 0 && line.trim()[0] != '"') {
        CodeMirror.Vim.handleEx(cmEditor, line);
    }
});

CodeMirrordefineEx()メソッドをつかって、iunmapというコマンドを追加している。

.obsidian.vimrc

.obsidian.vimrc
iunmap <C-d>

と書けば良い。

ソースコード修正とプルリク

実際にはmain.tsを修正し、GitHubからプルリクを送った。最終形になるまでになんどかやりとりあったけど、mergeされてリリースされたので、もう手でしこしことプラグインを直す必要がない!!!感激。

リソース

CodeMirrorのキーマップ定義ファイル
https://codemirror.net/keymap/vim.js

CodeMirrorのオンラインデモ
https://codemirror.net/demo/vim.html

CodeMirrorのマニュアル
https://codemirror.net/doc/manual.html

Obsidian Vimrc Support Pluginのサイト(GitHub)
https://github.com/esm7/obsidian-vimrc-support

環境

Obsidian Vimrc Support version 0.2.2
Obsidian v0.10.1
macOS BigSur バージョン 11.1
MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?