(同じ利用者による、間の245版が非表示) | |||
1行目: | 1行目: | ||
[[ファイル:vim.png|thumb|Vi IMproved|200px]] | |||
天才ビル・ジョイが自身のプログラミングのために作ったエディタ。進化系はvim。港の管理運営のために必須。 | |||
__TOC__ | __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!
|
終了、変更を破棄して終了 |