emacs 24(OSX)を使用していますが、シフト選択に問題があります。マウスで領域を選択すると、テキストが強調表示され、自動的にキルリングに保存されます(すぐにヤンクできます)。Shiftキーを押しながら選択すると、テキストが強調表示さM-w
れますが、ヤンクできるようにするには、テキスト()を手動で保存する必要があります。シフト選択でテキストを強調表示し、キルリングに保存する方法はありますか?
2 に答える
マウスでテキストを選択しても、デフォルトではキルリングには何も配置されません(Xクリップボードにコピーされます)。
Emacsがクリップボードと相互作用する方法をカスタマイズするさまざまな方法があります。見る:
C-hig (emacs) Cut and Paste
RET
シフト選択でテキストを強調表示し、キルリングに保存する方法はありますか?
選択を停止したことを検出する方法があるかどうかはわかりませんが、カスタム関数を実行してクリップボードに領域を配置する(そしてコマンド後のフックを削除する)ようhandle-shift-selection
に一時的に設定することをお勧めします。 post-command-hook
。
編集:ちょっと待ってください、あなたが説明していることは、UbuntuのEmacs24.1で私に起こっていることとまったく同じです。
EmacsでShiftキーを押しながらテキストを選択してから、任意のアプリケーションでマウスを中クリックすると、選択したテキストが貼り付けられます。
実行時にテストしてみてくださいemacs -Q
編集2:ああ、でもあなたはマウスを意味していませんでしたね?
これはどう?
(defvar my-shift-selection-in-progress nil)
(make-variable-buffer-local 'my-shift-selection-in-progress)
(defadvice handle-shift-selection
(before my-shift-selection-to-kill-ring-advice)
"Automatically copy shift-selected text to the kill ring.
If `interprogram-cut-function' is non-nil, also save the text for a window
system cut and paste.
See `my-shift-selection-to-kill-ring'."
(when (and shift-select-mode
this-command-keys-shift-translated
(not my-shift-selection-in-progress))
(add-hook 'post-command-hook 'my-shift-selection-to-kill-ring nil t)))
(ad-activate 'handle-shift-selection)
(defun my-shift-selection-to-kill-ring ()
"Post-command callback for my-shift-selection-to-kill-ring-advice."
(if this-command-keys-shift-translated
(kill-new (filter-buffer-substring (region-beginning) (region-end))
my-shift-selection-in-progress)
(remove-hook 'post-command-hook 'my-shift-selection-to-kill-ring t))
(setq my-shift-selection-in-progress this-command-keys-shift-translated))
「シフト選択からの自動キル」の問題は、シフト選択がいつ終了するかを決定することです(その時点で最終的にキルを実行できます)。