Macのデフォルトキーバインドのctrl-yと同等の挙動を実現したい

Keybindingsについての質問です。

実現したいことは、ctrl-kでkill lineし、ctrl-yでyankなのですが、yankを設定する方法が見つけられませんでした。
また、最終的には行いたいことは1行削除してその1行をペーストすることなのでyankでなく、ctrl-kで1行をcutし、ctrl-yでcore:pasteという方向性でも模索したのですが解決できませんでした。

いい解決方法はありますでしょうか。

利用環境

  • Platform: (macOS)
  • Platform version: (High Sierra 10.13.3)
  • App Version: (3.19.0)

yusugaさん

ご質問ありがとうございます。
まず ctrl-yはデフォルトキーバインドには存在しません。同等の挙動とは何でしょうか?
カーソル行のテキストをyank(コピー)したいという事であれば、残念ながらデフォルトのコマンドには用意されていません。
Vimプラグインを使用する必要があります。
あるいは、yankを実現するプラグインを別途作成する方法があります。
InkdropのエディタはCodeMirrorで組まれていますので、本家にあるコードを借用できます。

ご参考ください。

早速のご返信ありがとうございます。

まず ctrl-yはデフォルトキーバインドには存在しません。同等の挙動とは何でしょうか?

例えばですがmacOSのテキストエディタでControl-kとControl-yでKill LineとYankが動作しませんか?
参考: How to Use macOS’ Built-In “Kill and Yank” as an Alternative Cut and Paste

このControl-kとControl-yの挙動はデフォルトのテキストエディタに限らず、その他のエディタやSafariのURL部分などテキスト入力を扱う部分では基本的には利用可能だったのでデフォルトのキーバインドと思ってました。

なるほど、「デフォルトキーバインド」とはmacOSシステム標準のエディタ挙動ということですね。macOS版アプリのデフォルトキーバインドと思いました。
おっしゃられているのはカット&ペーストのような挙動ですね。
yankはvimだとコピーの意味合いで使われるので、互いの認識に齟齬が生じていました。

ご推察の通りctrl-kは行の削除であってカットではありません。これはOSの挙動と関係なく、CodeMirrorの仕様です。
ですのでプラグインで「行のカット (e.g., editor:cut-line)」コマンドを追加する必要があります。

yankはvimだとコピーの意味合いで使われるので、互いの認識に齟齬が生じていました。

あ、なるほどです。Emacsだとyankはペーストの意味で使われるので言葉足らずで失礼しました。

プラグインで「行のカット (e.g., editor:cut-line)」コマンドを追加する必要があります。

了解です。こちら機能リクエストということで受け付けていただければ幸いです。

Emacs的な動作なのですね。把握しました。

はい、要望が多ければ対応を検討したいと思います。

メモ:

1 Like

こちら古いトピックですが、アップデートです。
@Shunichi_Ikegami さんが emacs-keybindings というEmacsユーザ向けのキーバインディングプラグインを開発されました。
もしEmacs系キーバインディングをお探しの方はこちらをご使用ください。
これにて本トピックは解決済みとします。