ひとり勉強ログ

ITエンジニアの勉強したことメモ

LinuxのVimの使い方 その1~超基本~

vimコマンドのインストールを確認

[bash] $ vim --version [/bash]

インストールが完了していると下記のように表示される

[bash] VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 21 2016 17:00:20) 適用済パッチ: 1-160 Modified by <bugzilla@redhat.com> Compiled by <bugzilla@redhat.com> Huge 版 without GUI. 機能の一覧 有効(+)/無効(-) +acl +farsi +mouse_netterm +syntax +arabic +file_in_path +mouse_sgr +tag_binary +autocmd +find_in_path -mouse_sysmouse +tag_old_static -balloon_eval +float +mouse_urxvt -tag_any_white -browse +folding +mouse_xterm -tcl ++builtin_terms -footer +multi_byte +terminfo +byte_offset +fork() +multi_lang +termresponse +cindent +gettext -mzscheme +textobjects -clientserver -hangul_input +netbeans_intg +title -clipboard +iconv +path_extra -toolbar +cmdline_compl +insert_expand +perl +user_commands +cmdline_hist +jumplist +persistent_undo +vertsplit +cmdline_info +keymap +postscript +virtualedit +comments +langmap +printer +visual +conceal +libcall +profile +visualextra +cryptv +linebreak +python/dyn +viminfo +cscope +lispindent -python3 +vreplace +cursorbind +listcmds +quickfix +wildignore +cursorshape +localmap +reltime +wildmenu +dialog_con -lua +rightleft +windows +diff +menu +ruby/dyn +writebackup +digraphs +mksession +scrollbind -X11 -dnd +modify_fname +signs -xfontset -ebcdic +mouse +smartindent -xim +emacs_tags -mouseshape -sniff -xsmp +eval +mouse_dec +startuptime -xterm_clipboard +ex_extra +mouse_gpm +statusline -xterm_save +extra_search -mouse_jsbterm -sun_workshop -xpm システム vimrc: "/etc/vimrc" ユーザ vimrc: "$HOME/.vimrc" 第2ユーザ vimrc: "~/.vim/vimrc" ユーザ exrc: "$HOME/.exrc" 省略時の $VIM: "/etc" 省略時の $VIMRUNTIME: "/usr/share/vim/vim74" コンパイル: gcc -c -I. -Iproto -DHAVE_CONFIG_H -O2 -g -pipe -Wall -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 リンク: gcc -L. -Wl,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -Wl,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim -lm -lnsl -lselinux -lncurses -lacl -lattr -lgpm -ldl -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE -fstack-protector -L/usr/lib64/perl5/CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc [/bash]

インストールされていない場合は下記のコマンドでインストール ※管理者権限

[bash]

yum install vim

[/bash]

Ubuntuの場合は下記コマンドでインストール

[bash] $ sudo apt-get install vim [/bash]

Vimの起動

[bash] $ vi [/bash]

※「vi」でも「vim」でもよい

Vimの終了

「:q」と入力→Vim画面の最終行に「:q」と表示される。

Vimを終了するとシェルに戻る

ファイルを開く

指定したファイル名が存在しない場合は新規ファイル作成となる。 「testfile.txt」をいうフィルを新規作成する。

[bash] $ vi testfile.txt [/bash]

→中身が空白のファイルが表示される。

ファイルを保存する

「:w」と入力。

既存のファイルの場合は上書き保存、新規作成したファイルはこの時点でファイルが保存される。「vi」コマンドで新規作成したファイルを保存せず終了すると、ファイルはそのまま消滅する。

ファイルを開いたが上書き保存せずに終了したい場合

[bash] :q! [/bash]

Vimでのカーソル移動

h:左に移動 j:下に移動 k:上に移動 l:右に移動

文字の削除

消したい文字にカーソルを合わせ、「x」キーを押下。

文字の入力

ファイルを開いた後、「i」を押下。 →画面最終行に下記のように表示される。

[bash] -- 挿入 -- [/bash]

この状態を「インサートモード」と呼ぶ。「インサートモード」にしないとファイルに文字を入力することはできない。

「Esc」キーを押下すると「インサートモード」から「ノーマルモード」に戻る。

※「h」「j」「k」「l」を使用してのカーソル移動はノーマルモードで行う。

カーソルの右側に文字を入力したい場合

「i」の代わりに「a」を使って「インサートモード」になる。 ※行末にテキストを追加していきたい場合などに使用。

単語単位でのカーソル移動

b:前の単語の先頭に移動 w:後の単語の先頭に移動

「b」「w」は「'」「(」なども単語として判断されるため、カーソル移動が細かくなってしまう。 スペース区切りでカーソル移動したい場合は上記「b」、「w」を押下する際に「Shift」キーも同時に押下する。

行頭/行末に移動する

0:行頭に移動する $:行末に移動する

行番号で移動する

10行目に移動したい場合

[bash] 10G [/bash]

※「G」は「Shift」+「g」 ※画面上には表示されません。

ファイルの最初の行、最終行への移動

gg:最初の行に移動する G :最後の行に移動する

カット、コピー、ペースト

Vimではカット、コピー、ペーストの呼び方が他のエディタと異なります。

カット デリート(delete)
コピー ヤンク(yank)
ペースト プット(put)

デリート

「x」キー、または「d」コマンドでデリートが可能です。

「d」の後にカーソル移動コマンドを指定して使用します。

d$:行末までデリート d0:行頭までデリート dw:単語1つをデリート dgg:最初の行までデリート dG:最終行までデリート dd:現在カーソルのある行をデリート

プット

「p」キーで貼り付けることができます。

上記「d$」などでデリートした文字列を「p」を押下するとカットアンドペーストができます。

ヤンク

デリートのコマンド「d」を「y」キーに置き換えると、コピー(ヤンク)することができます。

カーソル移動コマンドを同時に使用する方法も、デリートと同じです。

また「yy」で現在カーソルのある行をコピー(ヤンク)することができます。

元に戻す、やり直し

u:直前の操作を取り消したい場合(Undo) Ctrl + r:間違ってアンドゥしてしまった場合に取り消す(redo