54

コードやその他のテキスト ファイルの表示と編集に emacs を使用しています。現在のバッファでマークされているテキストを前方または後方に検索する方法があるかどうかを知りたいと思いました。メモ帳やワードパッドでできることと同様です。同様に、バッファ内のテキストをマークして Cs または Cr を実行すると、検索テキスト全体を実際に入力しなくても、マークされたテキストで検索できますか?

ありがとうございました、

ロヒット

4

8 に答える 8

112

@アレックスはそれを釘付けにします。

私が頻繁に使用するもう 1 つのオプションはC-s C-w、現在のマークの後の単語を検索することです。繰り返しヒットC-wすると、追加の単語で検索が増加します (たとえば、C-s C-w C-w C-w現在のマークの後の 3 つの単語を検索します)。

同様にC-s M-s C-e、現在のマークの後の行の残りをC-s C-M-y検索し、マークの後の文字を検索します。M-s C-eこれらは両方とも同じ方法で繰り返し可能です (前者は の後でややぎこちなく繰り返しC-sます)。

于 2008-10-14T22:04:26.747 に答える
40

はい。 M-W(選択したテキストのコピーを取得するため)C-s <RET> C-y <RET>。その後、必要に応じて繰り返しC-sます。同様にC-r

于 2008-10-14T21:05:39.550 に答える
17

私は以下を使用していますが、後で発生するものを見つけるために1つ以上の連続するCを入力する必要がないという問題はありません。

    (defun search-selection (beg end)
      "search for selected text"
      (interactive "r")
      (kill-ring-save beg end)
      (isearch-mode t nil nil nil)
      (isearch-yank-pop)
    )
    (define-key global-map (kbd "<C-f3>") 'search-selection)

前のコードの欠点は、選択したテキストがストレッチにコピーされることです。次のコードにはこの問題はありません。

    (defun search-selection (beg end)
      "search for selected text"
      (interactive "r")
      (let (
            (selection (buffer-substring-no-properties beg end))
           )
        (deactivate-mark)
        (isearch-mode t nil nil nil)
        (isearch-yank-string selection)
      )
    )
    (define-key global-map (kbd "<C-f3>") 'search-selection)
于 2012-08-13T07:40:07.887 に答える
5

これを行うための最短のキー シーケンスは---Mです。w Cs My

于 2008-10-15T09:37:00.873 に答える
2

上記の回答(受け入れられたものを含む)は、私見では面倒すぎます。私は次の情報を見つけました。

「Ctrl+s Ctrl+w」。これにより現在の単語が検索されますが、最初にカーソルを単語の先頭に移動する必要があります。

http://xah-forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html

于 2015-03-15T04:51:16.777 に答える
0

Ch k Cs を実行すると、Cs のヘルプを見つけることができます。

検索文字列の末尾から最後の入力項目をキャンセルするには、DEL を入力します。RET を入力して終了し、見つかった場所にポイントを残します。行末に合わせて LFD (Cj) と入力します。Cs とタイプすると前方に再検索し、Cr と入力すると後方に再検索します。Cw を入力して、バッファ内の次の単語または文字をヤンクします 検索文字列の末尾に追加して検索します。検索文字列の末尾から文字を削除するには、CMw と入力します。CMy と入力して、バッファから char を検索文字列の末尾にヤンクし、検索します。Ms Ce と入力して、行の残りを検索文字列の末尾にヤンクし、検索します。キルされたテキストの最後の文字列をヤンクするには、Cy と入力します。My と入力して、検索プロンプトにヤンクされたばかりの文字列を、その前に kill された文字列に置き換えます。Cq と入力して制御文字を引用し、検索します。Cx 8 RET を入力して、Unicode 名で検索する文字を追加し、補完します。検索中または検索に失敗したときに Cg を実行すると、入力がキャンセルされ、検索に成功したものに戻ります。検索が成功したときの Cg は中断し、ポイントを開始ポイントに移動します。

検索文字列を空のままで終了しようとすると、非インクリメンタル検索が呼び出されます。

検索の大文字と小文字の区別を切り替えるには、Mc と入力します。非表示のテキストでの検索を切り替えるには、Ms i と入力します。Mr と入力して、正規表現モードを切り替えます。単語モードを切り替えるには、Ms w と入力します。Ms _ と入力して、シンボル モードを切り替えます。Ms ' と入力して、文字の折りたたみを切り替えます。

空白の一致を切り替えるには、Ms SPC と入力します。インクリメンタル検索では、1 つまたは複数のスペースは、通常、変数 'search-whitespace-regexp' で定義された空白と一致します。変数「isearch-lax-whitespace」および「isearch-regexp-lax-whitespace」も参照してください。

Ms e と入力して、ミニバッファーで検索文字列を編集します。

前の 16 個の検索文字列の検索リングもサポートされています。検索リングで次の項目を検索するには、Mn と入力します。検索リングで前の項目を検索するには、Mp と入力します。CMi と入力して、検索リングを使用して検索文字列を完成させます。

M-% と入力して、最後の検索文字列から置き換える文字列で 'query-replace' を実行します。CM-% と入力して、最後の検索文字列で「query-replace-regexp」を実行します。Ms o と入力して、最後の検索文字列を表示する 'occur' を実行します。Ms hr と入力して、最後の検索文字列を強調表示する 'highlight-regexp' を実行します。

Ch b と入力して、すべての Isearch キー バインディングを表示します。Ch k と入力して、Isearch キーのドキュメントを表示します。Ch m と入力して、Isearch モードのドキュメントを表示します。

于 2019-02-21T17:45:54.573 に答える