Fri Feb 14
Vim practice
Author:Noritaka
Write multipul files
Copy and paste the below text and type some commands like below.
---
1. $ mkdir replace-test
2. $ touch replace-test{1..4}.txt
3. $ nvim replace-test1.txt
4. :args replace-test*.txt
5. :argdo normal ggoAdd some words.
6. :argdo update
7. :wq
8. cat test*.txt
9. $ nvim replace-test1.txt
10. :vim some **/*.txt <CR>
11. :copen <CR>
12. :cdo %s/some/replace/g <CR>
13. :update
14. :cclose
ファイルの準備
mkdir replace-test
replace-test という名前の新しいディレクトリを作成します。
touch replace-test{1..4}.txt
replace-test1.txt から replace-test4.txt までの4つの空のテキストファイルを一度に作成します。
nvim replace-test1.txt
nvim (Neovim) というテキストエディタで replace-test1.txt を開きます。
複数のファイルに同じ内容を書き込む
:args replace-test*.txt
Vimの引数リスト(編集対象ファイルのリスト)に、replace-testで始まるすべての.txtファイルを設定します。これにより、replace-test1.txtからreplace-test4.txtまでが編集対象になります。
:argdo normal ggoAdd some words.
引数リストにあるすべてのファイル(argdo)に対して、ノーマルモードのコマンド(normal)を実行します。
gg: ファイルの先頭に移動します。
o: 新しい行を挿入し、インサートモードを開始します。
Add some words.: テキストを入力します。 結果として、すべてのファイルに "Add some words." というテキストが書き込まれます。
:argdo update
引数リスト内の変更されたすべてのファイルを保存します。
:wq
現在のファイルを保存してVimを終了します。
cat test*.txt
testで始まるすべての.txtファイルの内容を表示します。この場合、replace-test*.txtの誤記と思われます。正しく実行されていれば、4つのファイルすべてに "Add some words." と表示されます。
複数のファイルにまたがる単語の置換
nvim replace-test1.txt
再度 nvim で replace-test1.txt を開きます。
:vim some **/*.txt
カレントディレクトリ以下のすべての .txt ファイル (**/*.txt) から "some" という単語を検索します (vim は vimgrep の短縮形です)。検索結果は quickfix リストに格納されます。
:copen
quickfix ウィンドウを開き、検索結果の一覧を表示します。
:cdo %s/some/replace/g
quickfix リストにあるすべてのファイル(cdo)に対して、置換コマンドを実行します。
%s/some/replace/g: ファイル全体(%)の "some" という単語を "replace" にすべて(g)置換します。
:update
変更があったファイルを保存します。
:cclose
quickfix ウィンドウを閉じます。