skillup

技術ブログ

サーバー・ネットワーク

vimの小ネタ(主にテキスト置換系に関して)

投稿日:2016年2月4日 更新日:

前回に引き続き、またまたvimの小ネタなど

マクロ

エディタ上である動作を記録させておきたい場合、q+任意の文字(例えばa)+任意の動作+q で保存し

@aで再現することができる。100@aで同じ動作を100回繰り返し

例えば、下記の行の最後すべてに;(セミコロン)を入れたいとき

aaa
bbbbb
…(これが100行あったとする)
cccc

q+a+$(文末移動)+i(入力)+セミコロン+w(次の語句に移動)+qで保存し、100@aで一気に行末にセミコロンを入れられる。

単純な置換

%s /変更される文字/変更したい文字/gc

cが入らないと確認せずに一気に置換される。

%s→100,120sなどとやると100行目から120行目というように範囲を絞れる。

改行系の置換

aaa,bbb,cccを

aaa
bbb
cccと改行したいとき

%s /,/^M/gで変換できる(^MはCtrl+V,Ctrl+Mで出力できる)。逆に改行された状態からカンマ状態に戻したいときは%s /\n/,/g

一括置換

args *.cで同階層の.cファイルをすべて対象にする。:lsで対象となっているファイル一覧がわかる

再帰的に下位フォルダ内も対象とるする場合は:args **/*.c(全階層を対象にする)

この状態で対象ファイルに対して置換を行いたい場合、下記コマンドで確認しながら一気に置換ができる.
argdo %s/変更される文字/変更したい文字/gc | w

argdoは開いているファイルすべてが対象となり、| w で該当ファイルを保存。

応用として文字コードの置換も行える。

argdo set fenc=utf8 |w

-サーバー・ネットワーク

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ログ抽出コマンド特集 その3 データの収集や抽出にかかわるコマンド群(sort ,tr,cut)

サーバーの負荷を見る場合、unixコマンドでログを抽出できたりすると何かと便利です。 いままでも下記の記事でこれらの出力を行いました。 ログ抽出コマンド特集 その1 cat+grep+sort 私が本 …

no image

カレントディレクトリ以下のすべてのCR+LFをLFに

windows環境からファイルをアップしていると文字コードがバラバラだったりすることが多々あります。 まあ何がめんどくさいかというと差分がチェックできない。これが最悪です。 gitのdiffコマンドの …

no image

Vagrantでのフォルダ共有

Contents1 vagrantとホストOSのフォルダの共有2 ネットワークアダプタ設定3 任意のディレクトリをマウント vagrantとホストOSのフォルダの共有 ディフォルトではvagrantは …

no image

cakePHPでのサブディレクトリ(apache)

apache使用時、cakePHP2系をサブディレクトリで使いたいときの運用法に関して。通所通りですとファイルにアクセスできないので、URLのリライトをうまくしないといけません。下記に設定例をかきます …

no image

PHPのheroku(ヘロク)へのデプロイ

有名なPaasのサービスであるherokuをちょっといじったのでその時のメモなどを。 Contents1 アカウント開設2 Heroku | Cloud Application Platform3 デ …