5

次のテキストがあるとします。

(print "thIis-is-a-text")

カーソルは、文字「h」と「i」の間の「this」という単語にあります。

emacs で とC-s C-w入力すると、検索するテキストは 'is' になります。

再びC-w「is-is」です。

再びC-w「is-is-a」です。

再びC-w「is-is-a-text」です。

再びC-w「is-is-a-text」です...

そして、emacs プラグインのexpand regionがあります。

だから私はもっと賢くしたいと思っていC-s C-wます: 拡張領域と組み合わせます。

再び「this」という単語の文字「h」と「i」の間のカーソル、私の目標は次のとおりです。

と入力C-s C-wすると、「this」という単語が検索するテキストになります。

再び「this-is-a-text」になります。

再び「これはテキストです」になります。

再び「print "this-is-a-text"」になります。

再び '(print "this-is-a-text")' になります。

....(expand region のように動作します。これは良い例ではないかもしれません...)

テキストの検索に領域の拡張が非常に役立つ場合があるため、emacs と elisp を初めて使用するので、誰かがこれを達成するためのコードを書いてくれることを願っています。ありがとう、私の壊れた英語を許してください!:)

4

2 に答える 2

3

エキスパンドリージョンに似た何かをするためにthingatptを使用するthingoptと呼ばれる非常に単純なパッケージがあります。私はかなり前から修正バージョンを使用しており、isearchサポートが追加されています。この質問は、私にフォークしてプルリクエストを出すことを思い出させました。私のinit.elには次のものがあります。

(define-key isearch-mode-map (kbd "C-S-s") 'upward-isearch-thing)
(define-key isearch-mode-map (kbd "M-3") 'upward-isearch-thing)

(global-set-key (kbd "C-S-s") 'upward-mark-thing)
(global-set-key (kbd "M-3") 'upward-mark-thing)

(setq upward-mark-thing-list
      '(email
        url
        word
        symbol
        string
        (up-list . *)
        paragraph
        ))

私はexpand-regionを試しましたが、もっと良いと思いますが、もっと複雑に見えるので、使い始める前にisearchサポートを追加する必要があります。うまくいけば、私は(または他の誰かが)いつかそれを回避するでしょう。

于 2012-06-15T23:11:52.403 に答える