Vim
置換
Substitute
gオプション

[vim] 置換コマンド `:%s` の `g` オプションが効かない?

環境

  • PC : MacBook Air OS X EI Capitan バージョン 10.11.6
  • Vim : MacVim Custom Version 8.0.1272 (KaoriYa 20171105)

データ

aaa bbb aaa ccc 
aaa bbb aaa ccc 

やりたいこと

全ての aaa111 に置換したい。

やったこと

:%s/aaa/111/g 

結果

111 bbb aaa ccc 
111 bbb aaa ccc 

各行の最初の aaa しか置換されてなかった。
今までは g オプションをつければ、全部を置換してくれていたのに。

原因

いろいろと調べたところ、gdefault というコマンドで g オプションの動きを設定できるそうです。

:help gdefault

コマンド 'gdefault' がオン 'gdefault' がオフ
:s/// 全て置換 最初だけ置換
:s///g 最初だけ置換 全て置換
:s///gg 全て置換 最初だけ置換

既定ではオフのはずなので、
:e ~/.vimrc vim設定ファイルを確認したら、
set gdefault という設定が混ざっていました。
削除することでデフォルト設定に戻りました。

参考になったリンク

http://vim.wikia.com/wiki/Search_and_replace