一日生涯

備忘録

vimでファイルを跨いだ置換処理をしたい

1つのファイル内は%s/hoge/fuga/gcでよくやるけど、multiple fileは忘れやすいのでメモ

iOSProjectを想定しています。Project内を検索してAppDelegate.swift, ViewController.swiftのファイルを取り出して置換したいんす

やりたいこと

  • 別々の階層にあるファイルを跨いだ置換処理

やったこと

  1. 変更したいディレクトリ直下に移動し、vimで開く
cd ~/.ghq/github/SwiftHogeProject/SwiftHogeProject
vim AppDelegate.swift

2. ほんで以下のコマンド

:args **/*.swift
:args
:argdo %s/class/final class/ge | :update

継続と言う文字が表示されるがshift+gで自動で最後までやってくれる。

ただ、xvimでやっても動かなかった。なんでや。。

フォルダ構成

├── SwiftHogeProject
│   ├── AppDelegate.swift
│   ├── Assets.xcassets
│   │   └── AppIcon.appiconset
│   │       └── Contents.json
│   ├── Base.lproj
│   │   ├── LaunchScreen.storyboard
│   │   └── Main.storyboard
│   ├── Info.plist
│   └── ViewController.swift // ここが`Controller/ViewController`とかになってても置換できる。やったね
└── SwiftHogeProject.xcodeproj
    ├── project.pbxproj
    ├── project.xcworkspace
    │   ├── contents.xcworkspacedata
    │   └── xcuserdata
    │       └── omatty.xcuserdatad
    │           └── UserInterfaceState.xcuserstate
    └── xcuserdata
        └── omatty.xcuserdatad
            └── xcschemes
                ├── SwiftHogeProject.xcscheme
                └── xcschememanagement.plist

blog.ruedap.com