1. ホーム
  2. vim

[解決済み] VIMのコマンドラインで「カーソル位置の単語」を指定するには?

2023-02-05 11:09:16

質問

VIMで、カーソル下の単語を指定するコマンドを書きたいのですが、どうすればよいでしょうか。 例えば、ある単語にカーソルを合わせて、その単語を2回出現させるとします。 例えば、その単語が "abc" で、私が "abcabc" としたい場合、私はタイプすることができます。

:s/\(abc\)/\1\1/

しかし、その後、カーソルを "def" に移動して、同じコマンドで "defdef" に変更できるようにしたいのです。

:s/\(def\)/\1\1/

このようにするためには、コマンドラインにどのようにコマンドを書けばよいのでしょうか?

:s/\(*whatever is under the commandline*\)/\1\1

どのように解決するのですか?

<cword> はカーソルの下にある単語(:help <cword> ).

すみません、この回答はもっと完全であるべきでした。

コマンドをnmapしてもいいですし、この怠け者のためのキー操作のシリーズでもいいです。

b #go to beginning of current word
yw #yank to register

次に、パターンを入力するときに <control-r>0<enter> と打つと、0 番目のレジスタの内容がコマンドに貼り付けられます。

のようなコマンドを作ることもできます。

:nmap <leader>w :s/\(<c-r>=expand("<cword>")<cr>\)/

これは、'index' と 'w' を同時に押すことで、コマンドラインを次のように置き換えます。

:s/\(<currentword>\)/