プログラミング勉強 Vim

#1

vim とはUnix系のEditor

vim : vimを立ち上げる
:q  :vim 終了
vimtutor : vimの使い方が表示される

 

#2
通常ノーマルモード
入力モード (i) insert
コマンドモード (:)
visualモード (v)選択範囲に対して何かを行う

Escキーでノーマルモードに戻る

 

#3

:w  :変更を保存
:w ファイル名 :ファイル名をつけて保存
:q!  :変更点を無視して強制的に終了
:e ファイル名 :ほかのファイルを開く

 

#4

移動系のコマンド(ノーマルモード
gg :先頭にカーソルが戻る。
Shift+g(大文字G):カーソルが最後に行く。
Ctrl+f: 1画面下(画面単位で進む)
Ctrl+b: 1画面上(画面単位で戻る)
w:単語単位で動く(単語の最後に行く)
b:単語単位で動く(単語の先頭に戻る)

 

#5

^   :(キャレット)行頭に行く
$ :行末に行く
f+行きたいところのキャラクタ(文字) 同時押し :そこまでとんでいく
例)打ち込んだ文字がapple のとき、lのところにいきたければ、f+eでいける。
同じ文字が複数ある時はセミコロン;で次の文字に行く
%:対応する「(」や「{」に移動する(その括弧の上でおす )

 

#6

選択系(ビジュアルモード)v
通常は文字単位の選択
V(Shift+v):行単位の選択
Ctrl+v :矩形選択(矩形とは四角形のこと)
gg V G :全選択 (これは単なる組み合わせ)

h:左
j:下
k:上
l:右

 

#7

カット=削除
ノーマルモードに入る
x :一文字単位で消す。
dd :行単位で消す。 コマンドの意味 delete Windowsでの呼称 cut
数字dd : 数字行消す 3dd → 3行消す
p : カットしたものを貼り付ける。 コマンドの意味 put Windowsでの呼称 paste
yy : 1行コピー コマンドの意味 yank(ひっぱる) Windowsでの呼称 copy
数字yy : 数字行コピーする 3dd → 3行コピーする
copy yank
paste put
cut delete

参考

https://www.hpc.co.jp/support/hello_vi_03/

 

#8

 ノーマルモード
/ 文字 :その文字部分がどこか、検索する(とぶ)
複数ある場合
n :下方向に検索
N :上方向に検索
* : 今カーソルがある位置の単語を下方向に検索
# : 今カーソルがある位置の単語を上方向に検索
注)完全一致の単語のみ検索する

 

#9

置換
ノーマルモード

:s/A/B : AをBに変える substitute
例):s/state/State
複数ある場合
:s/A/B/g : カーソルがある行にあるAをすべてBに変える
例):s/i/I/g カーソルがある行にあるiが全部Iになる
:%s/A/B/g : ファイル全体のAをBにする
%は範囲を全体にしなさいという意味を持つ
:%s/A/B/gc : ファイル全体のAをBにするのを一つ一つ確認する confirm

 

#10

 u : undo(直前の操作を取り消す)
Ctrl+r : redo(undoを取り消す=取り消した操作を元に戻す)

 

#11

 :sp :ウィンドウを上下に分割
Ctrl+wのあとw :ウィンドウ間を移動
:e ファイル名 :ファイルを開く
:vs :ウィンドウを左右に分割
:close :カーソルを置いた部分で開いているファイルを閉じる、分割したウィンドウを戻す

#12

 :tabnew :新しいタブを作る
:tabe ファイル名 :新しいタブでファイルを開く
ノーマルモードに戻り、gt : タブ間を移動する
:tabclose :タブを閉じる
vim -p ファイルA ファイルB : vim起動時からtabで開く
:tabdo %s/A/B/g : 全てのタブでAをBに変える

 

#13

 ノーマルモード
.(ピリオド) : 直前の操作を繰り返す

 

#14

 = :インデント。字下げ。行の開始位置をずらす。
gg V G = : 全体を揃える。

 

#15

 Ctrl+n : 変数や関数名を簡単にもう一度使える(検索して使用)
例)se Ctrl+n とすると seから始まる変数名、関数名が選択肢として表示される

 

#16

 複数行の先頭などにまとめて何か文字を足す
1. ノーマルモードに入る 
2. Ctrl+v 矩形選択
3. 挿入モードにI(Shift+i)で入る
4. 入れたい文字を入力
5. ESCで戻る

 

#17

テキストオブジェクトを扱う
1.ノーマルモード
2.cit(テキストが消える)
3.挿入モードに入れる
c/d/y :change (delete & insert)
i/a :中身か全体か(inner or all)
t/"/)] : tag等

 

i : カーソルの前で挿入モード

a : カーソルの後ろで挿入モード

o : 改行して挿入モード

I : 先頭に移動して挿入モード

A : 末尾に移動して挿入モード

O : 前に改行して挿入モード

 

 クリップボードからVimへの貼り付け

コピー ctrl+insert
ペースト shift+insert
カット shift+delete