お品書き

概要 *

filesurround-2008.01.15.zip

選択操作を便利に。

設定 *

NetInstallerで導入した方は 1 は不要です

  1. $XYZZY/site-lisp/ 以下にコピーし、バイトコンパイルしてください。
  2. .xyzzy や siteinit.l に以下を参考に記述し、
    siteinit.lに記述した方は再ダンプしてください。
    (require "surround") ; ni-autoloadしている人は不要
    (global-set-key #\NUL 'set-mark-surround) ; マークはC-SPCでやりたい人用

使い方 *

M-sしてください。
その後は↓の操作等をしてください。

共通操作: *

*付きの操作は.xyzzy等でキーバインドを変更している方はそのキーバインドになります。多分。

  • M-s 選択開始 or 通常選択→矩形選択→行選択の切り替え
  • M-h 選択範囲をそれっぽく増加
  • M-d 選択範囲を左右それぞれ1文字ずつ縮める
  • M-g 選択中の文字列で 現在開いているファイルの拡張子のファイルを、作業ディレクトリからgrepします
  • C-x C-x *マーク位置とキャレット位置の入れ替え
  • M-/ *選択中の文字列を一つの行に連結し、連続する空白を1つにまとめます (just-one-space)
  • C-h *選択中の文字列を削除 (delete-backward-char-or-selection / backward-delete-char-untabify-or-selection)
  • C-u C-h *直前にM-hで()、[]、{}、''、""で囲まれた範囲を選択していれば囲っている文字だけ削除
  • C-d *選択中の文字列を削除 (delete-backward-char-or-selection / backward-delete-char-untabify-or-selection)
  • C-u C-d *直前にM-hで()、[]、{}、''、""で囲まれた範囲を選択していれば中身だけ削除
  • M-r *選択中の文字列で確認無しの置換 (replace-string)
  • M-C-r *選択中の文字列で確認有りの置換 (query-replace)
  • F5 *選択中の文字列で前方再検索 (repeat-forward-search)
  • S-F5 *選択中の文字列で後方再検索 (repeat-backward-search)
  • C-s *選択中の文字列で前方インクリメンタルサーチ (search-forward-again / isearch-repeat-forward)
  • C-r *選択中の文字列で後方インクリメンタルサーチ (search-backward-again / isearch-repeat-backward)
    (igsearch-forwardに割り当てられていれば、即igsearch-repeat-forward/backward)
  • ( 選択中の文字列を()で囲む
  • [ 選択中の文字列を[]で囲む
  • { 選択中の文字列を{}で囲む
  • ' 選択中の文字列を''で囲む
  • " 選択中の文字列を""で囲む

矩形選択状態の操作 *

  • C-w *矩形切り取り
  • C-y *矩形貼り付け
    矩形領域の開始位置と終了位置の桁が同じなら挿入 (yank-rectangle)
    矩形領域の開始位置と終了位置の桁が異なるなら
    矩形領域の左上から上書き (overwrite-rectangle)
  • M-w *矩形コピー
  • C-h *矩形内削除
    矩形領域の開始位置と終了位置の桁が同じならその左側を削除
  • C-x C-x *左上又は右下の角にキャレット移動
  • C-x C-l *矩形領域の大文字を小文字に変換 (downcase-region)
  • C-x C-u *矩形領域の小文字を大文字に変換 (upcase-region)
  • C-f *右に移動(行末かつgoal-columnを増やせるようならgoal-columnのみ増加)
  • Right 〃
  • C-b *左に移動(current-columnよりgoal-columnの方が大きければgoal-columnを減少)
  • Left 〃
  • C-e *リージョン内の一番桁数の多い行が選択されるようにgoal-columnを設定
  • C-Right 〃
  • SPC 矩形領域の開始位置と終了位置の桁が同じなら全ての行にスペースを入力し、
    異なれば矩形領域をスペースで上書き(clear-rectangle)
  • 修飾キーなしの文字
    開始位置と終了位置の桁が異なれば文字削除し、
    全ての行に同じ内容を入力

列モード選択状態の操作 *

  • C-w *切り取り (反転表示させている列)
  • M-w *コピー (反転表示させている列)

M-h の詳細: *

1. キャレット位置に属性(set-text-attribute)が付いていれば、その範囲
2. キャレット位置が
漢字/ひらがな/カタカナ/半角カタカナ/全角数字/全角アルファベット
の場合はその種類の文字(漢字なら漢字)の連続する部分
3. clickable-uriが導入されている場合はclickable-uriで強調表示している部分
4. シンタックスのw_に該当する部分(英数、シンボルに含まれる記号)
5. シンタックスの"に囲まれた部分(クォート・ダブルクォート自体も含む)
6. (と)に囲まれた部分(開き括弧、閉じ括弧自体も含む)
ただし、クォートされている場合とコメント部分と文字列部分にある場合は無視する。
6. [と]に囲まれた部分(開き括弧、閉じ括弧自体も含む)
ただし、クォートされている場合とコメント部分と文字列部分にある場合は無視する。
6. {と}に囲まれた部分(開き括弧、閉じ括弧自体も含む)
ただし、クォートされている場合とコメント部分と文字列部分にある場合は無視する。
6. surround-modeを開始した段落
7. バッファ全体

の順に選択範囲を広げていきます。
最後までいくと一番最初の位置に戻ります。

数字が同じ場合は範囲の大きさによって変わります。

既知の問題: *

  1. 矩形選択状態で日本語を入力しても全ての行に入力出来ない
    日本語の入力は直接self-insert-commandを使っているわけではないらしく、対策を思いつかない。
  2. M-hの5番は、paren.lの様子がおかしいような場所はだいたいおかしな動作をする。
  3. M-hで選択範囲の先頭と末尾のどっちにマークが行くか分からない
  4. M-hが勝手に選択範囲を広げるのでmulti-major-modeとの相性が悪い
    (surround-modeがすぐoffになる)
  5. C-u C-d と C-u C-h はどっちがどっちか覚えにくい気がスル…orz

履歴 *

2008.01.15

  • surround-delete-horizontal-spaces追加
  • surround-mode-init-keybindを実行するタイミングの調整

2007.03.02

  • 現在の列を選択するコマンド追加

2007.02.15

  • 各行の異なる桁位置を編集できる機能を追加(貧弱注意)
  • Grepする時のデフォルトの拡張子をある程度カスタマイズできるようにした
  • replace-string query-replaceで置換後の文字が保存されていなかったのを修正
  • キーボードマクロで使えるようにした

2007.02.08

  • C-iでsnippetを挿入し、C-u C-iでインデントを行うようにした
  • C-hでgoal-columnが保存されていなかったのを修正
  • デフォルトでキー置き換え(substitute-key-definition)をしないようにした
  • キー定義の直後にhookを仕込んだ
  • *post-command-hook*と*post-startup-hook*を間違えていたのを修正 orz

2007.02.04

  • M-hに属性(色付きの文字列とか)を追加
  • M-hに段落を追加
  • M-hに<>で囲まれた場所を追加

2007.01.29

  • 初版

コメント *

最新の10件を表示しています。 コメントページを参照

  • もう一つ良いでしょうか。キーバインドの設定は、 現在の substitute-key-definition で設定する方法と、define-key で C-f 等に設定する方法を選択できるようにはならないでしょうか。 -- 2007-02-05 01:36:50 (月)
  • hookは了解です。キーバインドの方は良く分からないのですが、初期化ファイルで何かのオプションを有効にすると初期化ファイルのキーバインドの設定に影響せずに↑に書いたキーバインドで、っていうことですか? -- シロ? 2007-02-05 01:55:40 (月)
  • hookお願いします。キーバインドの方は、もうその辺の関数はかなり変更していて、導入してもすぐに使えないという状態でして。とりあえず、試しに使ってみたいなという時に、そういうオプションがあると便利化です。常用するなら、いろいろ自分で手を加えてもいいのですけども。 -- 2007-02-06 23:11:37 (火)
  • あー、自作の関数を割り当ているとキー設定ができてないんですね。その辺のことがすっかり抜けてました。むしろ初期状態でdefine-keyして、オプションでsubstitute-key-definitionすべきでした。 -- シロ? 2007-02-07 06:35:17 (水)
  • pointが0からの矩形選択でloopにはまってしまいます。そんなへんな使い方する人いないと思いますが。。 -- amefura? 2007-02-09 20:20:30 (金)
  • point0は関係なく矩形選択で({["'です。これもへんな使い方ですね、もう少しよく使ってみてからコメントするようにします。失礼しました。 -- 2007-02-09 20:35:38 (金)
  • 便利に使わせて頂いています。 -- 2015-12-29 (火) 04:00:37
  • 矩形選択での選択開始行と終了行の列が同じ場合にスペースを挿入する場合に、バッファの1行目1列から矩形選択を開始してスペースを挿入すると処理が暴走します。 -- 2015-12-29 (火) 04:02:11
  • C-g で止めると、1行目だけスペースが大量に挿入されているようです。 -- 2015-12-29 (火) 04:05:37
  • Clear, infotmarive, simple. Could I send you some e-hugs? -- Latisha? 2016-01-27 (水) 19:50:51
お名前:

Tag: xyzzy script



添付ファイル: filesurround-2008.01.15.zip 1179件 [詳細] filesurround-2007.03.02.zip [詳細] filesurround-2007.02.15.zip 495件 [詳細] filesurround-2007.02.08.zip 508件 [詳細] filesurround-2007.02.04.zip 546件 [詳細]
トップ   編集 凍結 差分 BACKUP 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-01-15 (火) 23:02:29 (3361d)