よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

CUIエディタ vim でよく使いそうなコマンド一覧

CUIエディタvimでよく使いそうなコマンドを表にしました。
たくさんあって基本的なものも忘れてしまうのでw


目次




【ターミナル上でのコマンド操作】


コマンドプロンプト等のターミナルからvimをファイル名指定で開く方法など、基本的な操作。

vimの起動とファイルの開き方


ターミナルからコマンドラインでの操作を行います。

ターミナルを開くと

$

>

といったコマンドの待ち受け状態になっています。
そこからvimを起動するコマンドなどを入力します。

下の表の一番上にある例でいくと

$ vim sample.py

と入力すれば、ファイル名sample.pyがターミナル上にvimで開かれるという具合です。
(※ 先頭の$は入力の必要なし)

その際、指定したファイル名が既存ならそのまま開き無ければ新規作成されます。

コマンド 説明
vim ファイル名 対象ファイルを開く(複数ファイル可)
vim +n ファイル名 n行目から対象ファイルを開く
vi -r ファイル名 壊れたファイルのリカバリ
vim vimの起動。この場合、ファイルは起動後に指定して開く


vimの終了方法



右も左も分からぬままにvimを開くと
「なんじゃこりゃー!!」
となりますのでw、とりあえずそういう方は黙って

「ESC」キーを押して、「q!」を入力。

保存なしで強制終了します。

パニクっておられる方へ
CUIテキストエディタ Vim超絶基本操作
パニックになっているド初心者によるド初心者の為のvim終了方法と、画面の基本。




【基本のき】

ここから先は、vimを起動後の操作方法です。

vimにはモードという概念があります。
vimはグラフィカルなインターフェースではなく、全て文字入力で操作するCUIアプリです。

「コピーしなさい」「貼り付けなさい」などのコマンドを入力する場合に、通常の文章編集の為の入力とは別物の入力である必要があります。
そうした理由により、モードが幾つか準備されており、それを切り替えながら編集や操作をします。

モードが幾つかあるが、2つ覚えればたいてい操作できます。



ノーマルモード
「ESC」キーを押すとこのモードになる。
コマンド入力が出来る状態に変わり、ファイルの保存やvimの終了、コピーペーストや削除などができます。


挿入モード
ファイルに文章を入力する為のモードです。
コマンドモード中に「i」「a」「o」などのコマンド入力を行うと、このモードに変わります。
このモードに変えて、一般的なエディタ入力と変わりない方法で文章を入力していきます。

ノーマルモード」に移行したければ「ESCキー」を押す。


入力、編集


ノーマルモード」で下のコマンドを入力すると「挿入(Insert)モード」になります。

コマンド 説明
i カーソルの左から入力開始
I 行頭から入力開始
a カーソルの右から入力開始
A 行末から入力開始

「入力(挿入)モード」で「ESC キー」を押すことで「ノーマルモード」に切り替わります。


保存、終了


コマンド 説明
ZZ vimを終了(内容が変更されている場合は保存)
:w ファイルを上書き保存
:q vimを終了(内容が変更されいる場合は警告)
:wq ファイルを保存し、vimを終了
:数字,数字 w #行目から#行目までを保存
:q! vimを強制終了(内容が変更されていても保存しない)
:e ファイル名 ファイルを開く




【移動】


ページ内移動


コマンド 説明
gg ページの先頭に移動。
G ページの最終行の先頭に移動。
L ウインドウ内の一番下の行に移動。
^ 行のテキスト部分の先頭に移動。

カーソル移動


コマンド 説明
1G またはgg ファイル先頭
G ファイル末尾に移動
h、j、k、l hとjとkとlはキーボード配置で隣り合わせ。 左側のhから順に、左、下、上、右に移動
h またはBackSpaceキー 1文字戻る
j またはCtrl-n 1行下に進む
k またはCtrl-p 1行上に戻る
l (半角小文字のエル)またはSpaceキー 1文字進む
数字h 数字の分だけ左に戻る
数字j 数字の分だけ下に進む
数字k 数字の分だけ上に戻る
数字l 数字の分だけ右に進む
0 (半角数字のゼロ) 行の先頭に移動
$ 行の末尾に移動
H 画面の一番上に戻る
L 画面最下に進む
Ctrl-u 半画面戻る
Ctrl-d 半画面進む

単語移動


コマンド 説明
ge またはgE 前の単語の末尾に戻る

※ 大文字、 ドット(.)やコロン(:)のような記号もひと続きの単語とみなして移動。

文字移動


コマンド 説明
f文字1字 例)fa。(aを検索して移動。)その行の中で、カーソルより後ろにある入力した文字に該当する場所に移動
; fコマンドの移動を繰り返す
, 検索を先頭方向に戻る
F文字1文字 例)Fa。(aを先頭方向に検索して移動)。その行の中で、入力した文字に該当する場所を先頭方向に移動
; Fコマンドの移動を繰り返す
, 検索を後ろに戻る

単語移動


コマンド 説明
w またはW 次の単語の先頭に前進
b またはB 現在の単語もしくは前の単語の先頭に後退
e またはE 次の単語の末尾まで前進

※ 大文字、ドット(.)やコロン(:)のような記号もひと続きの単語とみなして移動

画面スクロール


コマンド 説明
zz 現在のカーソル位置を中央となるように画面がスクロール
zt 現在のカーソル位置が一番上となるように画面がスクロール
Ctrl + u 半画面分戻る
Ctrl + d 半画面分進む
Ctrl + b 1画面分戻る
Ctrl + f 1画面分進む



【繰り返し】


コマンド 説明
. (ドット) 直前のコマンドを繰り返す



【削除】



行削除


コマンド 説明
dd カーソルがある行を削除
:行番号d 例) :5d (5行目削除)。特定の行を削除
cc 1行を削除して、インサートモードに入る

単語削除


コマンド 説明
diw カーソル上の単語を削除
di" ダブルクォーテーションの内部を削除
dit HTMLタグの内部を削除
ciw カーソル上の単語を削除して、インサートモード
ci" ダブルクォーテーションの内部を削除して、インサートモード
cit HTMLタグの内部を削除して、インサートモード

文字削除


コマンド 説明
x カーソル位置の1文字削除
D カーソル位置から行末まで削除
C カーソル位置から行末まで削除して, インサートモード

範囲削除


コマンド 説明
dw カーソル位置から空白を含む単語の末尾まで削除
de カーソル位置から空白を含まない単語の末尾まで削除
d\$ カーソル位置から行末まで削除
d0 行先頭からカーソル位置まで削除
dG カーソル行からファイル末尾まで削除
df文字 カーソル位置から文字の現れるところまで削除



【コピー】


行コピー


コマンド 説明
yy カーソルがある1行をコピー
:行番号y 特定の行をコピー

単語コピー


コマンド 説明
yiw カーソル上の単語をコピー
yi" ダブルクォーテーションの内部をコピー
yit HTMLタグの内部をコピー

※ヤンク(コピー)はクリップボードにコピーするわけではないので、「y」でコピーしたものを他のアプリにペーストしたりが出来ない。

クリップボードを使う方法はOSやvimのバージョンに依るようなので適当にリンクを貼っておきます。

MacOS
初心者向け Vimでクリップボード連携(コピー&ペースト)する方法

ubuntuLinux
Vimでクリップボードからのペーストを可能にする

Windows
Windows用vim 香り屋

bash on Windowsでコピー&ペースト

vimのバージョン確認方法など
Vim の種類 (Vim family)

Androidスマホ
ターミナルアプリtermuxにインストールしたvimでは、通常通りに「画面長押し」してコピーとペーストがvimと他のアプリの双方向で可能なことを確認済みです。

Androidvimを使う方法について。
AndroidでVim



【挿入】


挿入モードに切り替え


コマンド 説明
o 現在の行の下に改行し、挿入モード移行
i カーソルの左側から挿入モード移行
a カーソルの右側から挿入モード移行
I 行頭に移動し、挿入モード移行
A 行末に移動し、挿入モード移行



【インデント】


コマンド 説明
>> インデントを追加
<< インデントを削除

※ 複数の行を選択した状態で行なった場合、選択した行が操作されます。



【undo 戻す】


コマンド 説明
u コマンドをもとに戻す



redo


コマンド 説明
Ctrl + r undoを取り消す



【検索】


コマンド 説明
f +1文字 ページ内の文字を検索
n 前方の同じ文字を検索
N 後方に同じ文字を検索



【置換】


コマンド 説明
:%s/検索する文字/置換後の文字 カーソルの行にある検索する文字を一つずつ置換します
:%s/検索文字/置換後の文字/g 現在扱っているファイルの全ての"検索する文字"を"置換する文字"に置換
:%s/^/#/g 現在のファイルの全ての行の先頭に「#」を追加
:%s/$/# コメント/g 現在のファイルの全ての行の末尾に「# コメント」を追加

※ コマンドの最後にcを付けると、置換の度に確認を訊かれるようにできる。



【選択】


コマンド 説明
V カーソルがある行を選択
y 選択した行をコピー
d 選択した行を削除
viw カーソル上の単語を選択
vi" ダブルクォーテーションの内部を選択
vit HTMLタグの内部を選択



【レコーディング機能】


コマンド 説明
qa レコーディングを開始
q レコーディングを終了

※ 参考:
http://qiita.com/taketin/items/aa6cc363f84f6090f1c0



【矩形(くけい)選択】


コマンド 説明
Cntl + v 矩形選択モード
d 矩形選択した範囲を削除
Cntl + v + \$ 矩形選択し、長さが異なる行を全選択
Cntl + v\$A 長さの異なる複数行の行末に同じ文字列を追加する

※ 参考
http://nanasi.jp/articles/howto/editing/blockwise-operation.html



【参考サイト】

http://motw.mods.jp/Vim/command.html

http://qiita.com/jnchito/items/57ffda5712636a9a1e62

http://myenigma.hatenablog.com/entry/2015/12/19/081933



【バッファ】


一度開いたファイルはバッファとして管理されます。


コマンド 説明
:ls バッファリストの表示
:b バッファ バッファを表示
:bn 次のバッファを表示
:bp 前のバッファを表示



【その他】


コマンド 説明
CTRL-g ファイル内での位置とファイルの状態を表示
:sp ファイル名 ウインドウを横に分割
:vs ファイル名 ウインドウを縦に分割
: q または :only カーソルのあるウィンドウ以外を全部閉じる
:new 空の横ウインドウを開く
:vnew 空の縦ウインドウを開く
Ctrl-w w 次のウインドウに移動
Ctrl-w p 前のウインドウに移動
Ctrl-w o 現在のウインドウ以外を閉じる
:! 外部コマンド 外部シェルコマンドが実行
:set number または:set nu 行番号を表示
:set no number または :set nonu 行番号の表示をやめる
:set showmode 現在のモードを表示
:set showmatch () や {} の対応を報告
:set ignorecase 大文字/小文字の区別なく検索
:set autoindent 自動インデントモード
:set noautoindent 自動インデントモードをやめる
:set all すべてのオプションを表示
:syntax on キーワードをハイライト表示する
:vert diffsplit ファイル名 今のファイルと、他のファイルとの差分を取るコマンド