🔠テキストの整形を効率的に終わらせるvimの小技

ちょっとした覚書やslackへの投稿前の下書き、調査時のログを仮置きしていたメモ環境としてはvimを使用していたのですが、最近はEvernoteに置き換えてしまって、iPhoneからでも編集しやすく、検索しやすいメモ環境を構築しています。

プレーンテキストで保存できれば充分なのですが、変なフォーマットが付いたり思い通りの表示になってくれなかったりと不満な点がありつつもメール送信でノート(メモ)が作成されるので自動化が容易なのと、自分が必要と思っていなかった機能やショートカットを覚えられる機会が得られるので新しい発見があり何かと楽しいです。

ですが、テキストのまとまりを必要な形式に変換する作業、テキスト整形をするためのツールではないので、そういった作業をするときにはgvimを立ち上げたり、コーディング中のvimエディタのタブを新規で立ち上げて整形しています。「この作業をするにはvimじゃないと」と思える小技が溜まってきたのでまとめておきます。

紹介するvimの小技としては以下になります

  • 文字の置換、削除
  • マーク機能で行削除
  • 矩形選択でまとめて行操作
  • マクロで繰り返し操作

文字の置換、削除

エディタツールとして基本的な機能。少ないタイプ数で柔軟性が高く、GUI操作ではないのでUIが変わらず一度覚えたらずっと使えます。使用方法は

  • /<置換したい文字列>
    • 検索
  • :%s//<任意の文字列>/
    • 置換

/<置換したい文字列> で検索した後だと :%s/<置換したい文字列>/<任意の文字列>/ に置き換えられます。 なお、置換したい文字列は正規表現で設定できるので一通り覚えておくと後々楽です、が、jsやrubyなどの正規表現とは少し違う設定方法(のはず)なのが分かりづらいのがたまに傷。

ちなみに <任意の文字列> は指定無しにすると削除されます。削除する用途で使うことが多いですね。

  • :%s///
    • 一括で削除
    • ただし行毎の先頭一致のみ
  • :%s///g
    • 一括で削除
    • 行毎の一致全て
  • :%s///c
    • 置換時に毎回確認
  • :%s//^M/
    • ^Mは改行コード
    • Ctrl+vの後にEnterで改行コードの挿入
    • タブもCtrl+vの後に指定可能

マーク機能で行削除

  • ma
    • マークの開始
  • jjj
    • 3行下に移動
    • 好きな位置まで移動
  • d'a
    • マーク位置から現在行まで削除

vimはノーマルモード中に5ddで5行削除できますが、行数なんて毎回数えるのは面倒なので「ここから、ここまで移動して、削除」と頭の流れをそのままコマンドとして打ち込めるのでマーク機能は楽です。
ちなみにvim使いはShiftキーと矢印キーを使うのを嫌います。

マーク機能はAlignプラグインで列の位置揃えをする場合によく使います。
http://nanasi.jp/articles/vim/align/align_vim.html
後述する矩形選択を実行する際にはマーク機能+Alignで揃えておくと楽に変更することができます。

矩形選択でまとめて行操作

複数行の行頭、行末に文字入力やペーストします。Ctrl+vで矩形選択中に

  • i huge Esc でhugeが全ての選択行に挿入
  • $で行末まで選択、Shift+a huge Esc で全ての行末にhugeが挿入
  • p で全ての選択範囲にペースト

pで行頭にペーストするときにはあらかじめ行頭に空白文字列を入力しておかないと、行頭1文字がペースト文字列に書き換わります。少々面倒ですね。

マクロで繰り返し操作

  • qa → <連続して実行したい操作を入力(マクロ)> → q
    • aキーにマクロの保存
  • 10@a
    • aキーに保存されたマクロを10回実行

例えばマクロを o Enter Esc j で記録、10@aで実行すれば10回連続した行の間に改行コードが挿入されます。

まとめ

以上が普段から使っているちょっとした小技です。コーディング中だとプラグインとして配布されいてる機能を使用しているばかりで、vim単体の機能を使いこなす場面は大文字コロンや大文字黒丸、全角数字などが入り混じる他人が書いたテキストを整形する際に鍛えられるなと。そんな機会あんまりないんですけどね。

投稿者: soramugi

ラジオ好きが講じてお仕事に選んだ人。 webエンジニアなので「ラジオで寂しさを無くすシステム制作」をしています(ラジオ=音声コンテンツ)。 東京は立川によく出没します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中