| (同じ利用者による、間の306版が非表示) | |||
| 1行目: | 1行目: | ||
[[ファイル:vim.png|thumb|Vi IMproved|200px]]  | |||
天才ビル・ジョイが自身のプログラミングのために作ったエディタ。進化系はvim。港の管理運営のために必須。  | |||
__TOC__  | |||
==初期設定==  | |||
ChatGPTが真っ先に教えてくれた設定。  | |||
==  |  # vim .vimrc  | ||
 " ========== 基本設定 ==========                                                                                                                                                                                                    | |||
 set number          " 行番号を表示  | |||
 set showcmd         " 入力中のコマンドを表示  | |||
 set wildmenu        " コマンド補完を強化  | |||
 set ruler           " ステータスラインにカーソル位置を表示  | |||
 set laststatus=2    " ステータスラインを常に表示  | |||
 let mapleader = " "     " スペースキーをリーダーキーに設定  | |||
 " ========== タブ・インデント ==========                                                                                                                                                                                            | |||
 set expandtab       " タブをスペースに変換  | |||
 set tabstop=2       " タブ幅を4スペース  | |||
 set shiftwidth=2    " 自動インデントも4スペース  | |||
 set autoindent      " 自動インデントを有効化  | |||
 " ========== 検設定 ==========  | |||
 set hlsearch        " 検索結果をハイライト  | |||
 set incsearch       " 入力と同時に検索  | |||
 set ignorecase      " 検索時に大文字小文字を無視  | |||
 set smartcase       " 大文字を含めたら区別  | |||
 " ========== 表示設定 ==========  | |||
 set nowrap          " テキストの折り返しを無効化  | |||
 set background=dark " ダークテーマ用の配色  | |||
 syntax on       " シンタックスハイライトを有効化  | |||
 colorscheme desert  " カラースキームを desert に。default もある  | |||
 " ========== プラグイン ==========  | |||
 call plug#begin('~/.vim/plugged')  | |||
 " ステータスライン  | |||
 Plug 'vim-airline/vim-airline'  | |||
 Plug 'vim-airline/vim-airline-themes'  | |||
 " ファイルエクスプローラー  | |||
 Plug 'preservim/nerdtree'  | |||
 " ファイル検索 / grep  | |||
 Plug 'junegunn/fzf'  | |||
 Plug 'junegunn/fzf.vim'  | |||
 " JS開発  | |||
 Plug 'neoclide/coc.nvim', {'branch': 'release'}  | |||
 Plug 'maxmellon/vim-jsx-pretty'  | |||
 call plug#end()  | |||
 " ========== 便利なキーマッピング ==========  | |||
 inoremap jj <Esc>  | |||
 inoremap <silent><expr> <CR> pumvisible() ? coc#pum#confirm() : "\<CR>"  | |||
 inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"  | |||
 inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"  | |||
 nnoremap <leader>s :w<CR>  | |||
 nnoremap <leader>q :q<CR>  | |||
 nnoremap <leader>r :execute 'Rg ' . expand('<cword>')<CR>  | |||
 nnoremap <C-g> :Rg<CR>  | |||
 nnoremap <C-f> :Files<CR>  | |||
 nnoremap <C-b> :Buffers<CR>  | |||
 nnoremap <C-n> :NERDTreeToggle<CR>  | |||
* :source ~/.vimrc で設定を適用  | |||
==プラグイン==  | |||
vimプラグインを使えば「軽量なデフォルトvim」をベースに「自分好みのIDE」にできる。軽量なまま。軽めのプログラミング言語なら重量級のIDEに課金して90%の機能を無駄にするより、vim使ったほうがスマート。  | |||
 # GPTおすすめのプラグイン  | |||
 1. fzf.vim(超高速ファイル・単語検索)  | |||
*   |  2. vim-airline(軽量なステータスバー)  | ||
 3. nerdtree(ファイルエクスプローラー)  | |||
 4. vim-gitgutter(git 連携)  | |||
 5. coc.nvim(VSCode 並みの補完・LSP。PHPも補完できる)  | |||
 :PlugInstall    # .vimrc に設定を追記した後で  | |||
==環境とシェル==  | |||
{| class="wikitable" summary="環境とシェル"  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>:set</code> || 現在セッションのオプションを表示  | |||
|-  | |||
|<code>:set shiftwidth=4</code> || インデントシフトの初期値  | |||
|-  | |||
|<code>:set autoindent </code> || 自動インデントモード  | |||
|-  | |||
|<code>:set hlsearch</code> || 検索時のハイライト表示をオン  | |||
|-  | |||
|<code>:set wrap</code> || 長文を折り返す  | |||
|-  | |||
|<code>:set showmatch</code> || ()や{}の対応表示をオン  | |||
|-  | |||
|<code>:set list</code> || タグや空白などの見えない文字が確認できる  | |||
|-  | |||
|<code>:set all</code> || 全てのオプションを表示  | |||
|-  | |||
|<code>:sh</code>, <code>^D</code> || シェルを起動、終了  | |||
|-  | |||
|<code>:!command</code> || コマンドを実行  | |||
|-  | |||
|<code>:n,m!command</code> || n行目から m行目まで command でフィルタ処理  | |||
|-  | |||
|<code>:r !date</code> || 日時情報がカレント行に書き込まれる  | |||
|}  | |||
==起動とファイル操作==  | |||
{| class="wikitable" summary="起動とファイル操作"  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>vi file1 file2 file3</code> || file1とfile2をオープン  | |||
|-  | |||
|<code>:r file1</code> || 現在行直下にfile1を全てコピー  | |||
|-  | |||
|<code>:5r file1</code> || 5行目にfile1を全てコピー  | |||
|-  | |||
|<code>:w! newfile</code> || 書き込み権限がない場合の一時しのぎ  | |||
|}  | |||
==画面分割==  | |||
{| class="wikitable" summary="画面分割"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>^w s</code>, <code>:sp file</code>  | |||
|(split) file を横分割で開く  | |||
|-  | |||
|<code>^w v</code>, <code>:vs file</code>  | |||
|(Verticle Split) file を縦分割で開く  | |||
|-  | |||
|<code>^w o</code>, <code>:on</code> || (only) 編集中ファイル以外を全て閉じる  | |||
|-  | |||
|<code>^w q</code>  | |||
|現在のウィンドウを閉じる  | |||
|-  | |||
|<code>^w + j/k/l/h</code>  | |||
|下/上/右/左のウィンドウに移動  | |||
|-  | |||
|<code>^w + [+/-]</code>  | |||
|ウィンドウの横軸を1行広げる/縮める  | |||
|-  | |||
|<code>^w + [3>/3<]</code>  | |||
|ウィンドウの縦軸を3つ広げる/縮める  | |||
|-  | |||
|<code>:ar</code> || 起動中のファイルをリスト表示  | |||
|-  | |||
|<code>:n</code> || (next) 次のファイルへ移動  | |||
|-  | |||
|<code>:rew</code> || 先頭のファイルへ移動  | |||
|-  | |||
|<code>:last</code> || 最後のファイルへ移動  | |||
|-  | |||
|<code>:e file2</code> || file2を編集する  | |||
|-  | |||
|<code>:e#</code>, <code>Ctrl + ^</code> || 直前のファイル編集へ戻る  | |||
|}  | |||
==テキスト移動==  | |||
{| class="wikitable" summary="テキスト移動"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>h</code>, <code>j</code>, <code>k</code>, <code>l</code>  | |||
|左、下、上、右  | |||
|-  | |||
|<code>w</code>, <code>W</code>, <code>b</code>, <code>B</code>  | |||
|前、後の単語(大文字は大きいジャンプ)  | |||
|-  | |||
|<code>e</code>, <code>E</code>  | |||
|単語の末尾(大文字は大きいジャンプ)  | |||
|-  | |||
|<code>)</code>, <code>(</code>  | |||
|次、前の文章へ  | |||
|-  | |||
|<code>}</code>, <code>{</code>  | |||
|次、前の空行で区切られたブロックへ  | |||
|-  | |||
|<code>%</code>  | |||
|括弧移動  | |||
|-  | |||
|}  | |||
==行移動==  | |||
{| class="wikitable" summary="行移動"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>[Enter]</code>  | |||
|次の行  | |||
|-  | |||
|<code>0</code>, <code>^</code>, <code>$</code>  | |||
|カレント行の先頭、文字先頭、末尾  | |||
|-  | |||
|<code>+</code>  | |||
|下の行の文字先頭  | |||
|-  | |||
|<code>-</code>  | |||
|上の行の文字先頭  | |||
|-  | |||
|<code>H</code>  | |||
|(Head) 画面の最上行  | |||
|-  | |||
|<code>M</code>  | |||
|(Middle) 画面の中央行  | |||
|-  | |||
|<code>L</code>  | |||
|(Lass) 画面の最下行  | |||
|-  | |||
|<code>nH</code>, <code>nL</code>  | |||
|上、下から n行目  | |||
|-  | |||
|<code>z[Enter]</code>  | |||
|カーソル位置を画面の一番上に  | |||
|-  | |||
|<code>z.</code>  | |||
|カーソル位置を画面中央に  | |||
|-  | |||
|<code>z-</code>  | |||
|カーソル位置を画面の一番下に  | |||
|-  | |||
|}  | |||
==スクロール==  | |||
{| class="wikitable" summary="スクロール"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>Ctrl + y</code>, <code>Ctrl + e</code>  | |||
|1行ずつ上、下にスクロール  | |||
|-  | |||
|<code>Ctrl + u</code>, <code>Ctrl + d</code>  | |||
|半画面ずつ上、下にスクロール  | |||
|-  | |||
|<code>Ctrl + b</code>, <code>Ctrl + f</code>  | |||
|1画面ずつ上、下にスクロール  | |||
|-  | |||
|}  | |||
==検索==  | |||
{| class="wikitable" summary="検索"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>tx</code>  | |||
|カレント行内でカーソルより後方にある x の直前にジャンプ  | |||
|-  | |||
|<code>Tx</code>  | |||
|カレント行内でカーソルより前方にある x の直前にジャンプ  | |||
|-  | |||
|<code>fx</code>  | |||
|カレント行内でカーソルより後方にある x にジャンプ  | |||
|-  | |||
|<code>Fx</code>  | |||
|カレント行内でカーソルより前方にある x にジャンプ  | |||
|-  | |||
|<code>;</code>, <code>,</code>  | |||
|カレント行の文字検索を前方、後方に繰り返す  | |||
|-  | |||
|<code>/pattern</code>  | |||
|前方にパターンを検索  | |||
|-  | |||
|<code>?pattern</code>  | |||
|後方にパターンを検索  | |||
|-  | |||
|<code>*</code>  | |||
|カーソル上のテキストを検索  | |||
|-  | |||
|<code>n</code>, <code>N</code>  | |||
|直近の検索を前方、後方に繰り返す  | |||
|-  | |||
|}  | |||
==置換==  | |||
{| class="wikitable" summary="置換"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>:s/old/new/</code>  | |||
|カレント行の最初の old を new に置換  | |||
|-  | |||
|<code>:s/old/new/g</code>  | |||
|カレント行の全ての old を new に置換  | |||
|-  | |||
|<code>:5s/old/new/g</code>  | |||
|5行目の全ての old を new に置換  | |||
|-  | |||
|<code>:23,44s/old/new/g</code>  | |||
|23~44行目内の全ての old を new に置換  | |||
|-  | |||
|<code>:%s/old/new/</code>, <code>:1,$s/old/new/</code>  | |||
|ファイル全ての old を new に置換  | |||
|-  | |||
|<code>:%s/old/new/c</code>  | |||
|ファイル全ての old を逐一確認しながら new に変換  | |||
|-  | |||
|<code>:%s/\(That\) or \(this\)/\2 or \1/</code>  | |||
|ホールドバッファ1,2によりthis or That と置換  | |||
|-  | |||
|<code>~</code>  | |||
|大文字/小文字に変換  | |||
|}  | |||
パターンマッチング(正規表現)による高度な置換は『vi入門83~107p』を確認  | |||
==ジャンプ==  | |||
{| class="wikitable" summary="行番号とマークによるジャンプ"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>Ctrl + G</code>  | |||
|ファイル名、状態、カレント行番号の表示  | |||
|-  | |||
|<code>gg</code>  | |||
|ファイル先頭にジャンプ  | |||
|-  | |||
|<code>G</code>  | |||
|ファイル末尾にジャンプ  | |||
|-  | |||
|<code>23G</code>, <code>:23</code>  | |||
|23行目にジャンプ  | |||
|-  | |||
|<code>mx</code>  | |||
|現在位置を x でマーク  | |||
|-  | |||
|<code>'x</code>  | |||
|x がある行の先頭にジャンプ  | |||
|-  | |||
|<code>`x</code>  | |||
|x にジャンプ  | |||
|}  | |||
==挿入と変更==  | |||
{| class="wikitable" summary="挿入と変更"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>i</code>, <code>a</code> || カーソルの前、後にテキストを挿入  | |||
|-  | |||
|<code>I</code>, <code>A</code> || 行の先頭、末尾にテキストを挿入  | |||
|-  | |||
|<code>O</code>, <code>o</code> || カーソルの上、下にテキストを挿入  | |||
|-  | |||
|<code>s</code>, <code>S</code> || 1文字、カレント行をテキストに変更  | |||
|-  | |||
|<code>r</code> || 一文字変更  | |||
|-  | |||
|<code>cw</code> || 単語変更  | |||
|-  | |||
|<code>cc</code> || カレント行を変更  | |||
|-  | |||
|<code>c + [motion]</code> || モーションで指定した場所までを変更  | |||
|-  | |||
|<code>c + nG</code> || カレント行からn行目までを変更  | |||
|-  | |||
|<code>C</code> || 行末まで変更  | |||
|-  | |||
|<code>R</code> || 重ね書き  | |||
|-  | |||
|<code>10i#-</code> || #- の組み合わせを10回入力。Vim によるテキスト編集はプログラミング  | |||
|-  | |||
|<code>Ctrl + t</code> || (挿入モード)右にインデント  | |||
|-  | |||
|<code>Ctrl + d</code> || (挿入モード)左にインデント  | |||
|-  | |||
|<code>>></code> || 右にインデント  | |||
|-  | |||
|<code>3<<</code> || 3行まとめて左にインデント  | |||
|-  | |||
|<code>:5,10 <<</code> || 5~10行まとめて右に2インデント  | |||
|}  | |||
==削除とヤンク==  | |||
{| class="wikitable" summary="削除とヤンク"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>^w</code>, <code>^u</code>  | |||
|入力中の単語を削除。入力中の行を削除  | |||
|-  | |||
|<code>x</code>, <code>X</code>  | |||
|文字を前方、後方に削除  | |||
|-  | |||
|<code>dw</code>  | |||
|単語を直後の空白とセットで削除  | |||
|-  | |||
|<code>de</code>  | |||
|単語のみを削除  | |||
|-  | |||
|<code>dd</code>  | |||
|カレント行を削除  | |||
|-  | |||
|<code>D</code>  | |||
|行末までを削除  | |||
|-  | |||
|<code>d + [motion]</code>  | |||
|モーションで指定した場所までを削除  | |||
|-  | |||
|<code>d + 7G</code>  | |||
|カレント行から7行目までを削除  | |||
|-  | |||
|<code>%d</code>  | |||
|全て削除  | |||
|-  | |||
|<code>yw</code>  | |||
|単語のヤンク  | |||
|-  | |||
|<code>yy</code>, <code>Y</code>  | |||
|カレント行のヤンク  | |||
|-  | |||
|<code>y + [motion]</code>  | |||
|モーションで指定した場所までをヤンク  | |||
|-  | |||
|<code>y + 7G</code>  | |||
|カレント行から7行目までをヤンク  | |||
|-  | |||
|<code>P</code>, <code>p</code>  | |||
|削除、ヤンクしたテキストをカーソルの前、後にペースト  | |||
|}  | |||
==レジスタの活用==  | |||
{| class="wikitable" summary="レジスタの活用"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|-  | |||
|<code>:reg</code>  | |||
|レジスタ一覧  | |||
|-  | |||
|<code>"a5Y</code>  | |||
|レジスタa にカレント行から5行を登録  | |||
|-  | |||
|<code>"AY</code>  | |||
|レジスタa にカレント行を追記  | |||
|-  | |||
|<code>"bp</code>  | |||
|レジスタb の内容をペースト  | |||
|-  | |||
|<code>^r + a</code>  | |||
|(挿入モードで)レジスタa をペースト  | |||
|-  | |||
|<code>^r +</code>  | |||
|(挿入モードで)クリップボードをペースト  | |||
|-  | |||
|}  | |||
==Exモードの活用==  | |||
{| class="wikitable" summary="exエディタの活用"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>%</code>, <code>1,$</code>  | |||
|ファイル内全ての行  | |||
|-  | |||
|<code>0</code>, <code>.</code>, <code>$</code>  | |||
|ファイルの先頭、カレント行、最終行  | |||
|-  | |||
|<code>x-n</code>  | |||
|xのn行前  | |||
|-  | |||
|<code>x+n</code>  | |||
|xのn行後  | |||
|-  | |||
|<code>Q</code>  | |||
|exエディタを起動  | |||
|-  | |||
|<code>:vi</code>  | |||
|viモードへ戻る  | |||
|-  | |||
|<code>:3,5d</code>  | |||
|3行目〜5行目を削除  | |||
|-  | |||
|<code>:.,$d</code>  | |||
|カレント行からファイル最終行までを削除  | |||
|-  | |||
|<code>:3,5m0</code>  | |||
|3行目〜5行目をファイル先頭に移動  | |||
|-  | |||
|<code>:3,5m10</code>  | |||
|3行目〜5行目を10行目に移動  | |||
|-  | |||
|<code>:13i</code> → <code>text</code> → <code>.</code> || 13行目に text を挿入  | |||
|-  | |||
|<code>:12c</code> → <code>text</code> → <code>.</code>  | |||
|(change) 12行目を text で置き換える  | |||
|}  | |||
==その他==  | |||
{| class="wikitable" summary="その他"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>.</code>  | |||
|直近の編集コマンドの繰り返し  | |||
|-  | |||
|<code>v</code>, <code>V</code>  | |||
|文字、行の選択  | |||
|-  | |||
|<code>ggVG</code>  | |||
|ファイル内全てを選択  | |||
|-  | |||
|<code>u</code>, <code>U</code>  | |||
|アンドゥ、カレント行の復元  | |||
|-  | |||
|<code>Ctrl + r</code>  | |||
|リドゥ  | |||
|-  | |||
|<code>J</code>  | |||
|2行の連結  | |||
|-  | |||
|<code>:ab</code>  | |||
|ab に登録されている略語の一覧  | |||
|-  | |||
|<code>:ab IBM International Business Machines</code>  | |||
|IBM を入力すると勝手に正式名称を展開してくれる  | |||
|-  | |||
|<code>:unab</code>  | |||
|ab に登録されている略語を解除  | |||
|}  | |||
==保存と終了==  | |||
{| class="wikitable" summary="保存と終了"  | |||
|-  | |||
!コマンド  | |||
!説明  | |||
|-  | |||
|<code>ESC</code>, <code>Ctrl + [</code>  | |||
|挿入モードへ  | |||
|-  | |||
|<code>:e!</code>  | |||
|一番最初の状態へ戻す  | |||
|-  | |||
|<code>:w</code>, <code>:w!</code>, <code>:wa</code>  | |||
|保存、強制的に保存、オープンしているファイルを全て保存  | |||
|-  | |||
|<code>:3,5w newfile</code>  | |||
|3〜5行目を newfile として保存  | |||
|-  | |||
|<code>:3,5w>>file</code>  | |||
|3〜5行目を file に追記  | |||
|-  | |||
|<code>ZZ</code>  | |||
|保存して終了  | |||
|-  | |||
|<code>:q</code>, <code>:q!</code>  | |||
|終了、変更を破棄して終了  | |||
|}  | |||
2025年4月10日 (木) 22:14時点における最新版

天才ビル・ジョイが自身のプログラミングのために作ったエディタ。進化系はvim。港の管理運営のために必須。
初期設定
ChatGPTが真っ先に教えてくれた設定。
# vim .vimrc
" ========== 基本設定 ==========                                                                                                                                                                                                  
set number          " 行番号を表示
set showcmd         " 入力中のコマンドを表示
set wildmenu        " コマンド補完を強化
set ruler           " ステータスラインにカーソル位置を表示
set laststatus=2    " ステータスラインを常に表示
let mapleader = " "     " スペースキーをリーダーキーに設定
" ========== タブ・インデント ==========                                                                                                                                                                                          
set expandtab       " タブをスペースに変換
set tabstop=2       " タブ幅を4スペース
set shiftwidth=2    " 自動インデントも4スペース
set autoindent      " 自動インデントを有効化
" ========== 検設定 ==========
set hlsearch        " 検索結果をハイライト
set incsearch       " 入力と同時に検索
set ignorecase      " 検索時に大文字小文字を無視
set smartcase       " 大文字を含めたら区別
" ========== 表示設定 ==========
set nowrap          " テキストの折り返しを無効化
set background=dark " ダークテーマ用の配色
syntax on       " シンタックスハイライトを有効化
colorscheme desert  " カラースキームを desert に。default もある
" ========== プラグイン ==========
call plug#begin('~/.vim/plugged')
" ステータスライン
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" ファイルエクスプローラー
Plug 'preservim/nerdtree'
" ファイル検索 / grep
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
" JS開発
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'maxmellon/vim-jsx-pretty'
call plug#end()
" ========== 便利なキーマッピング ==========
inoremap jj <Esc>
inoremap <silent><expr> <CR> pumvisible() ? coc#pum#confirm() : "\<CR>"
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
nnoremap <leader>s :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>r :execute 'Rg ' . expand('<cword>')<CR>
nnoremap <C-g> :Rg<CR>
nnoremap <C-f> :Files<CR>
nnoremap <C-b> :Buffers<CR>
nnoremap <C-n> :NERDTreeToggle<CR>
- :source ~/.vimrc で設定を適用
 
プラグイン
vimプラグインを使えば「軽量なデフォルトvim」をベースに「自分好みのIDE」にできる。軽量なまま。軽めのプログラミング言語なら重量級のIDEに課金して90%の機能を無駄にするより、vim使ったほうがスマート。
# GPTおすすめのプラグイン 1. fzf.vim(超高速ファイル・単語検索) 2. vim-airline(軽量なステータスバー) 3. nerdtree(ファイルエクスプローラー) 4. vim-gitgutter(git 連携) 5. coc.nvim(VSCode 並みの補完・LSP。PHPも補完できる)
:PlugInstall # .vimrc に設定を追記した後で
環境とシェル
| コマンド | 説明 | 
|---|---|
:set | 
現在セッションのオプションを表示 | 
:set shiftwidth=4 | 
インデントシフトの初期値 | 
:set autoindent  | 
自動インデントモード | 
:set hlsearch | 
検索時のハイライト表示をオン | 
:set wrap | 
長文を折り返す | 
:set showmatch | 
()や{}の対応表示をオン | 
:set list | 
タグや空白などの見えない文字が確認できる | 
:set all | 
全てのオプションを表示 | 
:sh, ^D | 
シェルを起動、終了 | 
:!command | 
コマンドを実行 | 
:n,m!command | 
n行目から m行目まで command でフィルタ処理 | 
:r !date | 
日時情報がカレント行に書き込まれる | 
起動とファイル操作
| コマンド | 説明 | 
|---|---|
vi file1 file2 file3 | 
file1とfile2をオープン | 
:r file1 | 
現在行直下にfile1を全てコピー | 
:5r file1 | 
5行目にfile1を全てコピー | 
:w! newfile | 
書き込み権限がない場合の一時しのぎ | 
画面分割
| コマンド | 説明 | 
|---|---|
^w s, :sp file
 | 
(split) file を横分割で開く | 
^w v, :vs file
 | 
(Verticle Split) file を縦分割で開く | 
^w o, :on | 
(only) 編集中ファイル以外を全て閉じる | 
^w q
 | 
現在のウィンドウを閉じる | 
^w + j/k/l/h
 | 
下/上/右/左のウィンドウに移動 | 
^w + [+/-]
 | 
ウィンドウの横軸を1行広げる/縮める | 
^w + [3>/3<]
 | 
ウィンドウの縦軸を3つ広げる/縮める | 
:ar | 
起動中のファイルをリスト表示 | 
:n | 
(next) 次のファイルへ移動 | 
:rew | 
先頭のファイルへ移動 | 
:last | 
最後のファイルへ移動 | 
:e file2 | 
file2を編集する | 
:e#, Ctrl + ^ | 
直前のファイル編集へ戻る | 
テキスト移動
| コマンド | 説明 | 
|---|---|
h, j, k, l
 | 
左、下、上、右 | 
w, W, b, B
 | 
前、後の単語(大文字は大きいジャンプ) | 
e, E
 | 
単語の末尾(大文字は大きいジャンプ) | 
), (
 | 
次、前の文章へ | 
}, {
 | 
次、前の空行で区切られたブロックへ | 
%
 | 
括弧移動 | 
行移動
| コマンド | 説明 | 
|---|---|
[Enter]
 | 
次の行 | 
0, ^, $
 | 
カレント行の先頭、文字先頭、末尾 | 
+
 | 
下の行の文字先頭 | 
-
 | 
上の行の文字先頭 | 
H
 | 
(Head) 画面の最上行 | 
M
 | 
(Middle) 画面の中央行 | 
L
 | 
(Lass) 画面の最下行 | 
nH, nL
 | 
上、下から n行目 | 
z[Enter]
 | 
カーソル位置を画面の一番上に | 
z.
 | 
カーソル位置を画面中央に | 
z-
 | 
カーソル位置を画面の一番下に | 
スクロール
| コマンド | 説明 | 
|---|---|
Ctrl + y, Ctrl + e
 | 
1行ずつ上、下にスクロール | 
Ctrl + u, Ctrl + d
 | 
半画面ずつ上、下にスクロール | 
Ctrl + b, Ctrl + f
 | 
1画面ずつ上、下にスクロール | 
検索
| コマンド | 説明 | 
|---|---|
tx
 | 
カレント行内でカーソルより後方にある x の直前にジャンプ | 
Tx
 | 
カレント行内でカーソルより前方にある x の直前にジャンプ | 
fx
 | 
カレント行内でカーソルより後方にある x にジャンプ | 
Fx
 | 
カレント行内でカーソルより前方にある x にジャンプ | 
;, ,
 | 
カレント行の文字検索を前方、後方に繰り返す | 
/pattern
 | 
前方にパターンを検索 | 
?pattern
 | 
後方にパターンを検索 | 
*
 | 
カーソル上のテキストを検索 | 
n, N
 | 
直近の検索を前方、後方に繰り返す | 
置換
| コマンド | 説明 | 
|---|---|
:s/old/new/
 | 
カレント行の最初の old を new に置換 | 
:s/old/new/g
 | 
カレント行の全ての old を new に置換 | 
:5s/old/new/g
 | 
5行目の全ての old を new に置換 | 
:23,44s/old/new/g
 | 
23~44行目内の全ての old を new に置換 | 
:%s/old/new/, :1,$s/old/new/
 | 
ファイル全ての old を new に置換 | 
:%s/old/new/c
 | 
ファイル全ての old を逐一確認しながら new に変換 | 
:%s/\(That\) or \(this\)/\2 or \1/
 | 
ホールドバッファ1,2によりthis or That と置換 | 
~
 | 
大文字/小文字に変換 | 
パターンマッチング(正規表現)による高度な置換は『vi入門83~107p』を確認
ジャンプ
| コマンド | 説明 | 
|---|---|
Ctrl + G
 | 
ファイル名、状態、カレント行番号の表示 | 
gg
 | 
ファイル先頭にジャンプ | 
G
 | 
ファイル末尾にジャンプ | 
23G, :23
 | 
23行目にジャンプ | 
mx
 | 
現在位置を x でマーク | 
'x
 | 
x がある行の先頭にジャンプ | 
`x
 | 
x にジャンプ | 
挿入と変更
| コマンド | 説明 | 
|---|---|
i, a | 
カーソルの前、後にテキストを挿入 | 
I, A | 
行の先頭、末尾にテキストを挿入 | 
O, o | 
カーソルの上、下にテキストを挿入 | 
s, S | 
1文字、カレント行をテキストに変更 | 
r | 
一文字変更 | 
cw | 
単語変更 | 
cc | 
カレント行を変更 | 
c + [motion] | 
モーションで指定した場所までを変更 | 
c + nG | 
カレント行からn行目までを変更 | 
C | 
行末まで変更 | 
R | 
重ね書き | 
10i#- | 
#- の組み合わせを10回入力。Vim によるテキスト編集はプログラミング | 
Ctrl + t | 
(挿入モード)右にインデント | 
Ctrl + d | 
(挿入モード)左にインデント | 
>> | 
右にインデント | 
3<< | 
3行まとめて左にインデント | 
:5,10 << | 
5~10行まとめて右に2インデント | 
削除とヤンク
| コマンド | 説明 | 
|---|---|
^w, ^u
 | 
入力中の単語を削除。入力中の行を削除 | 
x, X
 | 
文字を前方、後方に削除 | 
dw
 | 
単語を直後の空白とセットで削除 | 
de
 | 
単語のみを削除 | 
dd
 | 
カレント行を削除 | 
D
 | 
行末までを削除 | 
d + [motion]
 | 
モーションで指定した場所までを削除 | 
d + 7G
 | 
カレント行から7行目までを削除 | 
%d
 | 
全て削除 | 
yw
 | 
単語のヤンク | 
yy, Y
 | 
カレント行のヤンク | 
y + [motion]
 | 
モーションで指定した場所までをヤンク | 
y + 7G
 | 
カレント行から7行目までをヤンク | 
P, p
 | 
削除、ヤンクしたテキストをカーソルの前、後にペースト | 
レジスタの活用
| コマンド | 説明 | 
|---|---|
:reg
 | 
レジスタ一覧 | 
"a5Y
 | 
レジスタa にカレント行から5行を登録 | 
"AY
 | 
レジスタa にカレント行を追記 | 
"bp
 | 
レジスタb の内容をペースト | 
^r + a
 | 
(挿入モードで)レジスタa をペースト | 
^r +
 | 
(挿入モードで)クリップボードをペースト | 
Exモードの活用
| コマンド | 説明 | 
|---|---|
%, 1,$
 | 
ファイル内全ての行 | 
0, ., $
 | 
ファイルの先頭、カレント行、最終行 | 
x-n
 | 
xのn行前 | 
x+n
 | 
xのn行後 | 
Q
 | 
exエディタを起動 | 
:vi
 | 
viモードへ戻る | 
:3,5d
 | 
3行目〜5行目を削除 | 
:.,$d
 | 
カレント行からファイル最終行までを削除 | 
:3,5m0
 | 
3行目〜5行目をファイル先頭に移動 | 
:3,5m10
 | 
3行目〜5行目を10行目に移動 | 
:13i → text → . | 
13行目に text を挿入 | 
:12c → text → .
 | 
(change) 12行目を text で置き換える | 
その他
| コマンド | 説明 | 
|---|---|
.
 | 
直近の編集コマンドの繰り返し | 
v, V
 | 
文字、行の選択 | 
ggVG
 | 
ファイル内全てを選択 | 
u, U
 | 
アンドゥ、カレント行の復元 | 
Ctrl + r
 | 
リドゥ | 
J
 | 
2行の連結 | 
:ab
 | 
ab に登録されている略語の一覧 | 
:ab IBM International Business Machines
 | 
IBM を入力すると勝手に正式名称を展開してくれる | 
:unab
 | 
ab に登録されている略語を解除 | 
保存と終了
| コマンド | 説明 | 
|---|---|
ESC, Ctrl + [
 | 
挿入モードへ | 
:e!
 | 
一番最初の状態へ戻す | 
:w, :w!, :wa
 | 
保存、強制的に保存、オープンしているファイルを全て保存 | 
:3,5w newfile
 | 
3〜5行目を newfile として保存 | 
:3,5w>>file
 | 
3〜5行目を file に追記 | 
ZZ
 | 
保存して終了 | 
:q, :q!
 | 
終了、変更を破棄して終了 |