[Vim問題] ソースコードの””ブロックや{}ブロックの中身を空っぽにして変更する方法は?

この記事は約5分で読めます。

この記事では、Vim/neovimに関するキー操作「オペレータ+モーション」について、詳しくご紹介します。

今回はプラグインなしのVim/neovimで、プログラムのソースコードで頻繁に利用する「””ブロックや{}ブロックの値を一括変更する」キー操作を紹介します。

スポンサーリンク

[解答] ci” / ci( / ci{ / ci[

Vimで “”ブロック の値を変更するオペレータ+モーション ci”

(ノーマルモード)
ci"

こちらは次のような意味合いになります。

  • c -> 「変更」のオペレータ
  • i” -> カーソルのある “ブロック の値を指定するモーション(移動)

このとき、カーソルがある位置は””ブロックの中にある必要があります。

Vimで ""ブロック の値を変更する
Vimで “”ブロック の値を変更する

上の画像では Python の文字列部分の入れ替えに一役かっています。これは様々なプログラミング言語で頻繁に使える方法ではないでしょうか。

ちなみに、削除する場合はこちらのキー操作になります。

(ノーマルモード)
di"

Vimで ()ブロックの値を変更するオペレータ+モーション ci(

(ノーマルモード)
ci(

こちらは次のような意味合いになります。

  • c -> 「変更」のオペレータ
  • i( -> カーソルのある ()ブロックを指定するモーション(移動)

このとき、カーソルがある位置は()ブロックの中の位置にある必要があります。

Vimで ()ブロックの値を変更する
Vimで ()ブロックの値を変更する

こちらは Python のメソッドへ渡す引数をすべて入れ替えるのに役立っています。

関数の引数を編集する際に役立ちますよね。

ちなみに、削除する場合はこちらのキー操作になります。

(ノーマルモード)
di(

Vimで{}ブロックを変更するオペレータ+モーション ci{

(ノーマルモード)
ci{

こちらは次のような意味合いになります。

  • c -> 「削除」のオペレータ
  • i{ -> カーソルのある {}ブロックを指定する モーション(移動)

このとき、カーソルがある位置は()ブロックの中の位置にある必要があります。

こちらは Python での JSON(辞書)のブロックを編集するのに利用しています。

他のプログラミング言語であれば、関数の中身を入れ替える場合に役立つかもしれませんね。

ちなみに、削除する場合はこちらのキー操作になります。

(ノーマルモード)
di{

Vimで[]ブロックを変更するオペレータ+モーション ci[

(ノーマルモード)
ci[

こちらは次のような意味合いになります。

  • c -> 「変更」のオペレータ
  • i[ -> カーソルのある[]ブロックを指定するモーション(移動)

このとき、カーソルがある位置は()ブロックの中の位置にある必要があります。

Vimで[]ブロックを変更する

こちらは Python でリスト(配列)を入れ替える際に使用しています。

他のプログラミング言語の配列などで、同じように利用できるでしょう。

ちなみに、削除する場合はこちらのキー操作になります。

(ノーマルモード)
di[

とっさに手が動くようになるまで練習しましょう!

Vimで思考のスピードで編集する技術の1つ:モーション(移動)+オペレータ

先にもご紹介した通り、Vim / neovim を使って高速に編集するテクニックの1つとして、次の組み合わせを使いこなすことが挙げられます。

(ノーマルモード)
オペレータ + モーション

適用する編集内容と範囲について数個のキーで実行できる仕組みとなります。

vim ヘルプでは次のように表現されています。

移動コマンドはオペレータコマンドの後に続けることができ、カーソルが移動する間のテキストにそのオペレータコマンドを施すことができます。つまりは移動前と移動後のカーソル位置の間のテキストです。

motion – Vim日本語ドキュメント

少ないキー入力(ステップ)で、多彩な機能が実行できる Vim / neovim の便利さを象徴する機能とも言えますね。

この仕組みを最大限に生かすためには、数あるオペレータとモーションを覚える必要があります。

オペレータとは

オペレータ(オペレータコマンド)は、削除や変更などの編集機能(オペレーション)を指定するために使われます。

主なオペレータはこちら。

キーオペレーション(実行内容)
c変更
d削除
yヤンク
~
g~
大文字/小文字の入れ換え
gu小文字にする
gU大文字にする
>インデント下げ
<インデント上げ
zf折り畳み作成

他にもいくつかありますが、使い方が非常に複雑になるため省略しています。詳しくは Vim ヘルプをご覧ください。

“inner” モーションとは

モーションとは、通常は「カーソルの移動」を指します。しかし、オペレータなどと組み合わせる場合には、その適用範囲を示すことになります。

その中でも、今回紹介するのは “inner” が付くモーションです。

キーモーション(移動)
左 iW
右 iw
カーソル下にある単語
(スペース含まず)
左 aW
右 aw
カーソル下にある単語
(スペース含む)
is
as
カーソル下にある文
(i: スペース含まず、a:スペース含む)
ip
ap
カーソル下にある段落
(i: スペース含まず、a:スペース含む)
a) / a( / ab
i) / i( / ib
a} / a{ / aB
i} / i{ / iB
a” / a’ / a`
i” / i’ / i`
a> / a<
i> / i<
カーソル下にある各記号のブロック
(i: スペース含まず、a:スペース含む)
at
it
カーソル下にあるタグブロック
(i: スペース含まず、a:スペース含む)
後方 (
前方 )
1段落
後方 ]]
前方 [[
1セクション
次 ]m / ]M
前 [m / [M
メソッド

モーションはオペレータよりも更に沢山あります。

用途によっても利用要否が変わってきますので、こちらを一読して必要なモーションだけピックアップしておくのも1つの上達法でしょう。

補足情報

  • 利用頻度5.0
  • 便利さ5.0
  • 覚え易さ3.0

関連するVimヘルプ

Vimからは、下記のコマンドでヘルプを確認できます。

:help motion.txt
:help operator

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

参考書籍

こちらの書籍でも 「オペレータ+モーション」 が詳しく紹介されていますので、ぜひ確認しましょう。

実践Vim 思考のスピードで編集しよう! (アスキー書籍)
古くて新しいUnixのエディタVim――このVimのエディタとしてのコア機能をマスターするた...

Vim/neovim関連の書籍で、もっとも評判が良い(気がする)書籍です。Vim基本動作に関するバイブルと読んでる人もいます。その高い評価は、Amazonのレビューを読んでも間違いありません。

 

Vimテクニックバイブル~作業効率をカイゼンする150の技
(概要)Vimは開発者やサーバ管理者だけでなく,幅広いユーザをカバーする強力な̌...

こちらもVim関連の書籍で評価が高い書籍です。Vimを実践で使うノウハウが詰まっていますので、Vimmerなら一読する価値アリです。

 

Vim script テクニックバイブル ~Vim使いの魔法の杖 | Vim scriptサポーターズ |本 | 通販 | Amazon
AmazonでVim scriptサポーターズのVim script テクニックバイブル ~Vim使いの魔法の杖。アマゾンならポイント還元本が多数。Vim scriptサポーターズ作品ほか、お急ぎ便対象商品は当日お届けも可能。またVim script テクニックバイブル ~Vim使いの魔法の杖もアマゾン配送商品なら通常...

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊。Vim力を伸ばすなら、一度は読んでおくべきかも知れません。

プロフィール
管理人
Vim 一郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

Vim 一郎をフォローする
Vim操作方法
Vim 一郎をフォローする
スポンサーリンク
関連記事
Vim入門
タイトルとURLをコピーしました