「multiple-cursors を使うための設定」の編集履歴(バックアップ)一覧はこちら

multiple-cursors を使うための設定」(2019/11/01 (金) 00:02:52) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

&bold(){■ Emacs 全般で利用できる設定} ---- &bold(){【お知らせ】} ---- &bold(){<2018/08/10 追記>} mc/cycle-forward と mc/cycle-backward にキーを設定しました。 &bold(){<2018/08/08 追記>} カーソルの位置を維持するために mc/cursor-specific-vars 変数から temporary-goal-column を削除する設定を追加しました。 以下で追加された設定を解除しているものですが、この対応による影響は分かりません。 ・https://github.com/magnars/multiple-cursors.el/commit/eba10208fc38889e792dca08f4c2067936c3008a#diff-749d0080f8fe91f23f075149bf069e64 &bold(){<2017/05/02 追記>} 以前のバージョンより機能が縮小されましたが、正常に動作するように見直しました。 &bold(){【本題】} ---- multiple-cursors を違和感なく使うための設定です。以下のページを参考としています。 ・http://qiita.com/ongaeshi/items/3521b814aa4bf162181d ・http://qiita.com/scalper/items/b9e357b3af071c930777 ・http://nishikawasasaki.hatenablog.com/entry/2012/12/31/094349 ・http://tam5917.hatenablog.com/entry/20121208/1354931551 上記の設定に以下の改善をしてみました。 ・リージョンを選択せずに multiple-cursors を使った場合に、cua-mode と同じような動きとなるキー設定とした。また、縦移動時にカーソル位置が維持されないのを改善した。 ・操作性をシンプルにするために previous でマーカーを上位に設定する機能は、全面的に不採用とした。 C-t で起動します。後は、リージョンを設定してもしなくとも、C-n、C-p、C-s を使えば、だいたいのことはできるようになっています。 入力した正規表現にマッチするリージョン内の部分をマークする機能も C-M-r に設定しています。利用してみてください。 (require 'multiple-cursors) (require 'smartrep) (declare-function smartrep-define-key "smartrep") ;; 入力した文字列にマッチするリージョン内の部分をマークする (global-set-key (kbd "C-M-c") 'mc/mark-all-in-region) ;; 入力した正規表現にマッチするリージョン内の部分をマークする (global-set-key (kbd "C-M-r") 'mc/mark-all-in-region-regexp) (global-unset-key (kbd "C-t")) (smartrep-define-key global-map "C-t" '(("C-t" . 'mc/mark-next-like-this) ("C-n" . 'mc/mark-next-like-this) ("C-p" . 'mc/unmark-next-like-this) ("C-u" . 'mc/unmark-next-like-this) ("C-s" . 'mc/skip-to-next-like-this) ("C-*" . 'mc/mark-all-like-this) ("C-d" . 'mc/mark-all-like-this-dwim) ("C-i" . 'mc/insert-numbers) ("C-v" . 'mc/cycle-forward) ("M-v" . 'mc/cycle-backward) ("C-l" . 'recenter-top-bottom) ;; IM の切替えコマンドを指定する ("C-o" . 'toggle-input-method))) ;; IM の切替えコマンドを追加する (add-to-list 'mc--default-cmds-to-run-once 'toggle-input-method) ;; カーソルの位置を維持するために mc/cursor-specific-vars 変数から ;; temporary-goal-column を削除する (delq 'temporary-goal-column mc/cursor-specific-vars) (defun mc/last-command-check () (memq last-command '(mc/mark-next-like-this mc/unmark-next-like-this mc/skip-to-next-like-this))) ;; 縦移動時にカーソル位置が維持されないのを対策する (advice-add 'mc/mark-next-like-this :around (lambda (orig-fun &rest args) (if (mc/last-command-check) (let ((last-command 'next-line)) (apply orig-fun args)) (apply orig-fun args)))) ;; smartrepによるコマンド実行中はキー入力をエコーしない ;; http://shakenbu.org/yanagi/d/?date=20140105 (advice-add 'smartrep-map-internal :around (lambda (orig-fun &rest args) (let ((echo-keystrokes 0)) (apply orig-fun args)))) 以下のページの内容を追加設定するとさらに便利になります。 http://qiita.com/ShingoFukuyama/items/3ad7e24cb2d8f55b4cc5 ---- <変更履歴> ・2014/05/21 このページを作成した。 ・2014/05/30 実装方法を見直した。(機能は同じ) ・2014/07/31 NTEmacs で IM の切換えを行う場合、切替えが正しく機能しない場合があることの対策を行った。 ・2017/05/02 以前のバージョンより機能が縮小されたが、正常に動作するように見直した。 ・2018/08/08 カーソルの位置を維持するために mc/cursor-specific-vars 変数から temporary-goal-column を削除する設定を追加した。 ---- #javascript(){{ <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-40267130-1', 'atwiki.jp'); ga('send', 'pageview'); </script> }}
&bold(){■ Emacs 全般で利用できる設定} ---- &bold(){【お知らせ】} ---- &bold(){<2018/08/10 追記>} mc/cycle-forward と mc/cycle-backward にキーを設定しました。 &bold(){<2018/08/08 追記>} カーソルの位置を維持するために mc/cursor-specific-vars 変数から temporary-goal-column を削除する設定を追加しました。 次のコミットで追加された設定を解除しているものですが、この対応による影響は分かりません。 ・https://github.com/magnars/multiple-cursors.el/commit/eba10208fc38889e792dca08f4c2067936c3008a#diff-749d0080f8fe91f23f075149bf069e64 &bold(){<2017/05/02 追記>} 以前のバージョンより機能が縮小されましたが、正常に動作するように見直しました。 &bold(){【本題】} ---- multiple-cursors を違和感なく使うための設定です。次のページを参考としています。 ・http://qiita.com/ongaeshi/items/3521b814aa4bf162181d ・http://qiita.com/scalper/items/b9e357b3af071c930777 ・http://nishikawasasaki.hatenablog.com/entry/2012/12/31/094349 ・http://tam5917.hatenablog.com/entry/20121208/1354931551 上記の設定に次の改善をしてみました。 ・リージョンを選択せずに multiple-cursors を使った場合に、cua-mode と同じような動きとなるキー設定とした。また、縦移動時にカーソル位置が維持されないのを改善した。 ・操作性をシンプルにするために previous でマーカーを上位に設定する機能は、全面的に不採用とした。 C-t で起動します。後は、リージョンを設定してもしなくとも、C-n、C-p、C-s を使えば、だいたいのことはできるようになっています。 入力した正規表現にマッチするリージョン内の部分をマークする機能も C-M-r に設定しています。利用してみてください。 (require 'multiple-cursors) (require 'smartrep) (declare-function smartrep-define-key "smartrep") ;; 入力した文字列にマッチするリージョン内の部分をマークする (global-set-key (kbd "C-M-c") 'mc/mark-all-in-region) ;; 入力した正規表現にマッチするリージョン内の部分をマークする (global-set-key (kbd "C-M-r") 'mc/mark-all-in-region-regexp) (global-unset-key (kbd "C-t")) (smartrep-define-key global-map "C-t" '(("C-t" . 'mc/mark-next-like-this) ("C-n" . 'mc/mark-next-like-this) ("C-p" . 'mc/unmark-next-like-this) ("C-u" . 'mc/unmark-next-like-this) ("C-s" . 'mc/skip-to-next-like-this) ("C-*" . 'mc/mark-all-like-this) ("C-d" . 'mc/mark-all-like-this-dwim) ("C-i" . 'mc/insert-numbers) ("C-v" . 'mc/cycle-forward) ("M-v" . 'mc/cycle-backward) ("C-l" . 'recenter-top-bottom) ;; IM の切替えコマンドを指定する ("C-o" . 'toggle-input-method))) ;; IM の切替えコマンドを追加する (add-to-list 'mc--default-cmds-to-run-once 'toggle-input-method) ;; カーソルの位置を維持するために mc/cursor-specific-vars 変数から ;; temporary-goal-column を削除する (delq 'temporary-goal-column mc/cursor-specific-vars) (defun mc/last-command-check () (memq last-command '(mc/mark-next-like-this mc/unmark-next-like-this mc/skip-to-next-like-this))) ;; 縦移動時にカーソル位置が維持されないのを対策する (advice-add 'mc/mark-next-like-this :around (lambda (orig-fun &rest args) (if (mc/last-command-check) (let ((last-command 'next-line)) (apply orig-fun args)) (apply orig-fun args)))) ;; smartrepによるコマンド実行中はキー入力をエコーしない ;; http://shakenbu.org/yanagi/d/?date=20140105 (advice-add 'smartrep-map-internal :around (lambda (orig-fun &rest args) (let ((echo-keystrokes 0)) (apply orig-fun args)))) 次のページの内容を追加設定するとさらに便利になります。 ・http://qiita.com/ShingoFukuyama/items/3ad7e24cb2d8f55b4cc5 ---- <変更履歴> ・2014/05/21 このページを作成した。 ・2014/05/30 実装方法を見直した。(機能は同じ) ・2014/07/31 NTEmacs で IM の切換えを行う場合、切替えが正しく機能しない場合があることの対策を行った。 ・2017/05/02 以前のバージョンより機能が縮小されたが、正常に動作するように見直した。 ・2018/08/08 カーソルの位置を維持するために mc/cursor-specific-vars 変数から temporary-goal-column を削除する設定を追加した。 ---- #javascript(){{ <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-40267130-1', 'atwiki.jp'); ga('send', 'pageview'); </script> }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: