スポンサーリンク

【Ubuntu】viエディタ 〜 キー覚書 〜

Ubuntu(というかLinux)には、viというテキストエディタが標準でインストールされています。

テキストエディタというと、Windowsではさくらエディタや秀丸などが有名ですが、いずれもWindows上で動作するアプリという位置付けです。

viは、端末(コンソールともいう)上でキーボードを駆使して入力するテキストエディタです。
マウスなどは使わず、キーボードだけでカーソル移動などするので、少しクセがあります。

かくいう私は、就職した最初の仕事がviを使用したソースコードの修正でしたので、さくらエディタなどのWindows用エディタよりも先に覚えた、思い出深いエディタです。

ただ、使用し続けないと「あれ?どうやるんだっけ?」などとキーを忘れてしまったりするので、本ブログに残しておこうと思います。

尚、最初に断っておきますが、本ブログは全てのキーを網羅しているわけではありません。

スポンサーリンク

設定ファイルについて

viには、行番号を表示したり改行時に自動的にインデントを埋め込んだりする設定が可能です。

設定方法ですが、ユーザのホームディレクトリに「.exrc」ファイルを置き、その中に決まったフォーマットで設定を記述します。(ファイル名は、頭にドットが必要です)

ちなみにホームディレクトリは、.bashrcなどが置いてある、以下の場所です。(cdで移動できる位置です)
尚、.exrcファイルは作成済みなので表示されてます。

端末

user@user:~$ cd
user@user:~$ ls -aF
./ .config/ .profile Pictures/
../ .exrc .ssh/ Public/
.ICEauthority .gnupg/ .sudo_as_admin_successful Templates/
.bash_history .local/ Desktop/ Videos/
.bash_logout .mozc/ Documents/ examples.desktop
.bashrc .mozilla/ Downloads/ fontconfig/
.cache/ .parallels/ Music/

そして、私がいつも設定している内容が以下です。

.exrcファイル内

set number
set tabstop=4
set autoindent

  • set number
    行番号を表示
  • set tabstop=4
    タブの文字数
  • set autoindent
    改行時の自動インデントを有効に

他にもいくつかあるようですが、備忘録ということで省略します。

エディタ起動

viエディタは、端末上でvi [ファイル名]で起動できます。
以下の例では、test.txtというファイル名で開いています。

端末

user@user:~$ vi test.txt

尚、終了する場合は、後ほど詳しく書きますが、「:q」「:q!」、「:w」「:w!」などで終了します。

キー操作一覧

冒頭でも書きましたが、viエディタはキーボードだけで操作を行います。

以下、私がよく使うキーです。

エディタ終了

 キー 実行内容
:qエディタを終了する。ただし、編集して保存していない場合は終了できない。
(頭にコロンが必要)
:q!エディタを終了する。編集して保存していなくても終了できる。
(頭にコロンが必要)
:w編集した内容を保存する。(頭にコロンが必要)
:w!編集した内容を保存し、エディタを終了する。(頭にコロンが必要)

編集モード開始/終了

 キー 実行内容
iカーソル位置にて編集モードに入る。
A
(Shift+a)
カーソル位置を行末に移動して、編集モードに入る。
I
(Shift+i)
カーソル位置を行頭に移動して、編集モードに入る。
oカーソル行の次行を追加、その行頭へ移動して、編集モードに入る。
O
(Shift+o)
カーソル行の前行を追加、その行頭へ移動して、編集モードに入る。
rカーソル位置にて上書き編集モードに入る。1文字入力した時点で編集モードを終える。
つまり、1文字上書き。
R
(Shift+r)
カーソル位置にて上書き編集モードに入る。
ESCキーが押されるまで、入力した文字で上書きされる。
ESCキー編集モードを終了する。

文字削除

 キー 実行内容
xカーソル位置の文字を1文字削除する。
ddカーソル行を削除する。
行数ddカーソル行を基準に、指定された行数分削除する。
例)3行削除する → 3dd
dG
(d Shift+g)
カーソル行以降の行を全て削除する。

カーソル移動

 キー 実行内容
jカーソル位置を1つ下に移動する。
kカーソル位置を1つ上に移動する。
hカーソル位置を1つ左に移動する。
lカーソル位置を1つ右に移動する。
H
(Shift+h)
カーソル位置を、画面の最上行に移動する。
M
(Shift+m)
カーソル位置を、画面真ん中の行に移動する。
G
(Shift+g)
カーソル位置を、最終行へ移動する。
Ctrl+fカーソル位置を、1画面分、下に移動する。
Ctrl+bカーソル位置を、1画面分、上に移動する。
:行番号指定された行番号へ、カーソルを移動する。(頭にコロンが必要)
例)10行目に移動する → :10

コピー&ペースト

 キー 実行内容
yyカーソル行をコピーする
行数yyカーソル行を基準に、指定された行数分コピーする。
例)3行コピーする → 3yy
pコピーした内容をペーストする。

その他、便利なキー

 キー 実行内容
:e!編集をキャンセルし、最後に保存した内容で開き直す。
u直前の1操作をキャンセルする。
さらにもう1度押すと、そのキャンセルを元に戻す。
:set number行番号を表示。(頭にコロンが必要)
set nuと省略することも可能。
:set nonumber行番号を非表示。(頭にコロンが必要)
set nonuと省略することも可能。
:set tabstop=2タブの文字数を2に変更する。
:set autoindent改行時の自動インデントを有効にする。
:set noautoindent改行時の自動インデントを無効にする。

おまけ

  • キーが複数に跨ぐ場合、最初のキーをキャンセルする。
    例えば、
     yyの場合、1つ目のyを押した状態でESCキーを押せば、そのyがキャンセルされる。
     3ddの場合、3を押した状態でESCキーを押せば、その3がキャンセルされる。

さいごに

viでの操作は、キーさえ覚えればかなり快適です。
カーソル移動もキーボード上で行えるため、手をキーボードとマウス間で移動させる必要もなく、その分入力に集中できます。

ちなみに私は、vi操作時に「マウスの使用」「上下左右キーの使用」は恥ずかしいものだと思ってました。
おそらく1番最初に教えてもらった先輩の影響かと思います。

さて話は変わりますが、Ubuntuには、さくらエディタや秀丸のようなGUIのテキストエディタ、geditも標準で搭載されています。
Ubuntuのアプリ一覧などで「gedit」と入力すれば表示されますので、どうしてもviが苦手という人は、geditを使ってみてはいかがでしょうか。

コメント