vi
last update:
2023/01/23
Search :
: 0 results
ファイルオープン
vi [file] 新規、又は既存ファイル view [file] readonly vi [file] +[n] n行目から vi [file] +/[string] 最初の[string]から vi -r [file] file復元
モード
i カーソル前に入力 a カーソル後に入力 I 行頭に入力 A 行末に入力 o 下行に入力 O 上行に入力 v 選択 V 行選択 [control]+v 矩形選択 (選択モードで)o 選択範囲の始点終点にカーソル移動 : コマンド [esc] or [control]+c ノーマル [control]+v > 縦に範囲選択 > I > 文字入力 > [esc] // 複数行頭に同時入力 [control]+v > 縦に範囲選択 > A > 文字入力 > [esc] // 複数行末に同時入力
移動
gg 文頭 % 対応する括弧 { 上の段落 - 上行頭文字 k 上 gk 表示行上 0 行頭 ^ 行頭文字 b 前単語頭 ge 前単語末 h 左 l 右 w 次単語頭 e 次単語末 $ 行末 gj 表示行下 j 下 [enter] 下行頭文字 F[char] 行の任意文字(前) f[char] 行の任意文字(次) ; 次の候補 , 前の候補 } 下の段落 H 画面上 M 画面中央 L 画面下 ''(シングル2個) 直前の場所 [n]G 指定行 G 文末
マーク
m[a~z] カーソル位置を記録 '[a~z] 記録位置の行頭文字に移動 :marks マーク一覧
編集
y 選択範囲コピー yy 行コピー "[a~z]y 特定バッファにコピー x 文字カット X バックスペース dw 単語カット dd 行カット d[move] 移動分カット D 行末までカット s 文字カットし入力 S 行カットし入力 cw 単語カットし入力 cc 行カットし入力 c[move] 移動分カットし入力 C 行末までカットし入力 P 文字は左、行は上にペースト p 文字は右、行は下にペースト "[a~z]p 特定バッファをペースト [v,y,d,c]at タグごと編集 [v,y,d,c]it タグ内編集 [v,y,d,c]a" "ごと編集 [v,y,d,c]i" "内編集 r[char] 上書き ~ 大文字小文字変換 文字選択をして u 小文字に変換 [control]+a インクリメント [control]+x デクリメント J 次行を連結 [n]<< n行シフト [n]>> n行シフト < 選択範囲左シフト > 選択範囲右シフト u undo [control]+r redo . 直前動作の繰り返し [n1]=[n2] n1行からn2行までインデントを整形 [control]+p, [control]+n 入力補完 [control]+[shift]+v [control]+[shift]+m 改行コード入力
マクロ
q[a〜z] 記録開始 q 記録終了 [n]@[a〜z] 記録したマクロをn回実行
スクロール
[control]+b 1頁上、カーソルは下 [control]+u 半頁上、カーソルは同位置の行頭 [control]+y 1行上 z[enter] カーソル行を画面上へ zz カーソル行を中央へ z- カーソル行を画面下へ [control]+e 1行下 [control]+d 半頁下、カーソルは同位置の行頭 [control]+f 1頁下、カーソルは上
検索,置換
?[string] 前を検索(nで次候補,Nで前候補) /[string] 後を検索(nで次候補,Nで前候補) * 選択範囲と同じ文字を検索 :%s/[from]/[to]/g 一括置換 :%s/[from]/[to]/gc 1つずつ置換 :[n],[m]s/[from]/[to]/g n行からm行まで一括置換
ファイル抽出
:args [dir/files] 複数ファイル抽出 :args 抽出ファイル確認 :argadd [dir/files] 抽出ファイル追加 :argdelete [dir/files] 抽出ファイル削除 :argdo /[string] 抽出ファイルに対して一括検索 :argdo %s/[from]/[to]/g | update 抽出ファイルに対して一括置換
履歴
q: コマンド履歴 q/ 検索履歴 [control]+c 選択中のテキストをコマンドラインに送る
シェル
:![command] vi内からコマンド実行
保存,終了
:w 保存 :q 終了 :wq 保存して終了 :q! 保存せず終了 :e! 編集分をリセット
ウィンドウ
:sp [file] 縦に分割 :vs [file] 横に分割 :new 縦に分割新規 :vnew 横に分割新規 [control]+ww ウィンドウ移動 [control]+w c 今いるウィンドウを閉じる [control]+w o 今いるウィンドウのみ残す [control]+wg ファイル名表示
エンコード,改行
:e ++enc=utf8 utf-8に変更 :e ++enc=sjis shift_jisに変更 :e ++enc=euc-jp euc-jpに変更 :set ff=mac mac形式の改行コードに変更 :set ff=dos win形式の改行コードに変更 :set ff=unix unix形式の改行コードに変更
.vimrc
vi ~/.vimrc open file set encoding=utf-8 " reading set fileencoding=utf-8 " saving set fileencodings=ucs-boms,utf-8,euc-jp,cp932 " reading character mode set fileformats=unix,mac,dos " reading new line mode set ambiwidth=double " cure multibyte scriptencoding utf-8 " for use multibyte set paste " no autoindent (when paste) set tabstop=2 " width tab set shiftwidth=2 " width shift set softtabstop=2 " width shift when delete set expandtab " tab -> a few spaces set incsearch " search suggestion set ignorecase " case insensitive set smartcase " sensitive when include upper-case set hlsearch " highlight syntax on " color set number " line number let g:user_emmet_expandabbr_key = '<c-y>' set statusline=%F " filename set statusline+=%m " change status set statusline+=%r " readonly set statusline+=%h " help set statusline+=%w " preview set statusline+=%= " pos right set statusline+=[ENC=%{&fileencoding}] " encode set statusline+=[LOW=%l/%L] " line number set laststatus=2 " display status """ vundle set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " vundle basic Bundle 'gmarik/vundle' " syntax es6 Bundle 'othree/yajs.vim' " activation editorconfig Bundle 'editorconfig/editorconfig-vim' " tree navigation (<C> - move current to root, <I> - find hide files) Bundle 'scrooloose/nerdtree' nnoremap <silent><Ctrl-e> :NERDTreeToggle<CR> " operation git (:Ggrep [str] - search) Bundle 'tpope/vim-fugitive' autocmd QuickFixCmdPost *grep* cwindow set statusline+=%{fugitive#statusline()} " extensive comment (<Ctrl> + 2 hyphens) Bundle 'tomtom/tcomment_vim' " syntax of vue Bundle 'posva/vim-vue' " another syntax Bundle 'lepture/vim-jinja' " file type filetype plugin indent on code_popup :BundleInstall plugin install