IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第10回 Linuxのテキストエディタに慣れよう vi編 (3) コピー・ペーストの効率化とアンドゥ (濱田康貴) 2022年11月

みなさんこんにちは。株式会社パイプラインの濱田です。前回はviを使ったテキストファイルの編集について、最低限覚えておきたいテクニックを取り上げました。今回は、vi内でのコピー・ペーストの効率化とアンドゥについて取り上げます。

複数行コピーとペーストをやってみよう

今回の実習用にテキストファイルを作成します。前回までの実習で使用したファイルに上書きし、新たな内容を書き込みます。

echo "012" > ${HOME}/test-ctct.txt

そして、viでテキストファイルを開きます。

vi ${HOME}/test-ctct.txt

最初に、行数表示を行います。vi起動時はコマンドモードで起動しますので、「:set nu」をタイプしてからエンターキーを押下します。それでは、1行目の内容をviでコピー(ヤンク)して9行ペーストしましょう。コマンドモードで「yy (小文字でyを2回)」とタイプしてから「9p」をタイプします。
012 と書かれた行が10行になりました。それでは、次にこれを100行にしてみましょう。今の状態からですと、次の方法が考えられます。

  1. 「90p」とタイプして追加で90行ペーストする
  2. 先頭行にカーソルを持っていき、10行ヤンクしてから9回ペーストする

1番目の方法は、自身で直前に1行目をヤンクして、その内容をviが覚えてくれていることがわかっているときに使えるコマンドです。しかし、時間の経過などで直前のコマンドで何をしたのか覚えておらず、ファイルの内容を見てから判断したい場合は、2番目の方法を実行するのがよいでしょう。

それでは実際に100行の012が連続しているか確認してみます。どちらの方法を実行しても、カーソルは2行目に位置しているでしょう。viの画面を閉じずに100行あるかどうかを確認するために、実際に100行目まで移動してみましょう。前回、上下左右カーソル移動のうち下方向への移動に「J」キーを押下すると説明しました。しかし、100行目まで移動するのに同じキーを押しっぱなしにして時間がかかるのも面白くありません。現在カーソル位置が2行目にあって100行目までカーソルを移動させたい場合、次の2通りの方法のうちいずれかを使うと便利でしょう。

  1. このテキストファイルが100行であることがわかっているため、最終行へ移動するショートカット「Gキー(大文字)」を押下する
  2. 今のカーソル位置が2行目にあることがわかっているので、98行下へカーソルを移動させるため「9」「8」「J(小文字)」を押下する
行単位の削除をやってみよう

先ほど100行目まで移動しましたので、100行目を1行削除してみましょう。行単位の削除はショートカットキー「dd (小文字でDを2回)」を用います。
次に、1行目から連続した99行を削除するため、いちどカーソルを先頭行へ移動させますので、「gg (小文字のGを2回)」と押下します。99行まとめて削除する場合は、「9」「9」「dd (小文字のDを2回)」と押下します。

直前のコマンド実行を取り消したい場合

直前のコマンド実行を取り消したい場合は、「u (小文字のU)」を押下します。
ここまで読み進めてきた勘の良い方はお気づきかと思いますが、行移動やコマンド実行など、複数回連続した同じコマンドを実行するために、コマンドの前に数字を入力する方法をとることができます。例えば、直前3コマンドぶんを実行取り消ししたい場合は3uとタイプするといったように、です。しかし、何かしらのコマンドを間違うということはどんな順番でどんなコマンドを実行したかを正確に覚えていることの方が少ないでしょうから、まとめてコマンド実行取り消しをするのではなく、1手1手取り消してテキストの内容を確認することをおすすめします。
次回はファイルとディレクトリのパーミッションについて取り上げたいと思います。
CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。

https://www.school.ctc-g.co.jp/category/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes