vimrc 基本設定†
set number
set title
set tabstop=4
set showmatch
set noautoindent
set nowrap
set listchars=tab:>-
set list
highlight Comment ctermfg=DarkRed
set encoding=utf-8
set fileencodings=ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,euc-jp,sjis,cp932,utf-8
autocmd FileType perl,cgi :compiler perl
vimrc 拡張設定 set title [#w568f81e]†
set tabstop=4find . -type f -not -regex '\./\.git.*' -print | xargs cat | wc -l
set showmatch
set noautoindent
set nowrap
set listchars=tab:>-
set list
highlight Comment ctermfg=DarkRed
set encoding=utf-8
基本キー操作†
| e <file> | 追加でファイルを読み込む |
| e! | 今のファイルを読み直す(=変更を全て取り消す) |
| b | 前の単語にカーソルを移動 |
| w | 次の単語にカーソルを移動 |
| ctrl + f | 一画面分進める |
| ctrl + b | 一画面分戻る |
| i | カーソルの前に入力 |
| a | カーソルの後に入力 |
| I | カーソルを行頭に移動し、その直前に入力 |
| A | カーソルを行末に移動し、その直後に入力 |
| o | カーソル行の下に空行を作成し入力 |
| O | カーソル行の上に空行を作成し入力 |
| .[Enter] | 直前のコマンドの中止(UNDO) |
| u(小文字) | 直前に実行したコマンドの取り消し ↑と同じかな?(要調査) |
| U(大文字) | カーソル行に行った変更を全て取り消す |
| 0(zero) | 行頭に移動 |
| $ | 行末に移動 |
| M | 画面の中央行に移動 |
| % | 対応する括弧に移動 |
| (行末で) 大文字 J | 改行の削除 |
| ~(にょろ) | 大文字小文字変換 |
| :e![Enter] | ファイルの読み直し (保存前の変更を全て取り消す) |
| yy | カーソル行をコピー |
| 10yy | カーソル行から10行をコピー |
| a10yy | カーソル行から10行を コピーバッファ[a-z]にコピー |
| D (D$) | カーソルから行末までを削除 (D$ と書いても同じ) |
| dgg | 行頭からカーソルまでのを削除 |
| dd | カーソル行を削除 |
| dG | カーソルからファイルの最後までを全て削除 |
| p(小文字) | カーソル行の下に ペースト |
| P(大文字) | カーソル行の上に ペースト |
| ctrl + v | ビジュアルモード 矩形選択 |
| "aP(大文字) | カーソル行の上に バッファー[a-z]をペースト |
| :%s/置換前/置換後/[Enter] | カーソル付近の一文字置換 |
| :%s/置換前/置換後/g[Enter] | 文書全体の一括置換 |
| :g/^$/d | 空行の削除 |
| B,Es/置換前/置換後/g[Enter] | B行目〜E行目までの一括置換 |
| C | カーソルから右を削除して入力モードに遷移 |
| :noh | 検索によるハイライトを消す |
| :!(UNIX コマンド) | コマンドの実行 |
| :r(ファイル名) | カレント行にファイルを読み込む |
| :r!(UNIX コマンド) | コマンド実行結果をカレント行に貼り付ける |
| set listchars=tab:>- | tab の可視化 |
| set list |
| ls | バッファーリストの表示 |
| b数字 | N番目のバッファーに切り替え |
| bn | 次のバッファーに切り替え |
| bp | 前のバッファーに切り替え |
| badd | 追加でファイルをバッファーに読み込み |
| :cope[n] | QuickFixウィンドウを開く(コンパイル結果などの確認) |
| :ccl[ose] | QuickFixウィンドウを閉じる |
| :split (ss) | 画面の水平に分割 |
| :vsplit (vs) | 画面の垂直に分割 |
| [CTRL]+w (hjkl) | 分割画面の移動(カーソル移動キー) |
| :set <no>scrollbind (scb) | 同時スクロール <の解除> |
- 起動時の設定 (ルートディレクトリの .exrc ファイル)
- 日本語の文字コードを自動判別
set encoding=utf-8
set fileencodings=ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,euc-jisx0213,euc-jp,sjis,cp932,utf-8
- 文字コードを変更して保存
| set fileencoding=文字コード | set fenc(短縮形) |
| set fileencoding=euc-jp | エンコーディングEUC-JPに変更 |
| set fileencoding=shift_jis | エンコーディングSHIFT_JISに変更 |
| set fileencoding=utf-8 | エンコーディングUTF-8に変更 |
- 改行コードを変更して保存
| set fileformat=ファイルフォーマットの種類 | set ff(短縮形) |
| set fileformat=dos | 改行をWindowsの形式に変更 |
| set fileformat=mac | 改行をMacの形式に変更 |
| set fileformat=unix | 改行をUnixの形式に変更 |
応用キー操作†
- 選択した文字を検索 = (選択)→ /(検索状態)→ [CTRL]+r → "(無名レジスタ、又は指定したレジスタ)
- 行マーク
| 操作 | コマンド |
| 登録 | m(a-z,A-Z) |
| 呼び出し | '(a-z,A-Z) |
| 確認 | :marks |
| 削除(個別) | :delmarks[a-z,A-Z] |
| 削除(一括) | :delmarks! |
- CTAGS
- タグファイルの生成 = ctags -f .tgas
- vim へのタグファイルの指定 :set tags=.tags
- 関数定義元へのジャンプ = 関数呼び出し部分にカーソルがある状態で [CTRL]+]
- ジャンプした元に戻る = '"(ジャンプ、無名レジスタ)
複数ファイルの編集関連†
- 複数ファイルを同時に開く
- vim ファイル名 ファイル名 -O(大文字)= 横に並べて開く
- vim ファイル名 ファイル名 -o (小文字)= 縦に並べて開く
- 後からファイルを開いて並べる
- :vs ファイル名 = 横に並べて追加でファイルを開く
- :sp ファイル名 = 縦に並べて追加でファイルを開く
- スクロールを同期させる
- :set scb を同期させるウィンドウ全てで実行
複数行削除†
- n行目から現在位置まで削除 [#n3a5ec27]
- 現在行から文末まで削除
vi を使いやすくするため、 半角/全角キーも ESC に割り当てる (for Ubuntu 12.04)†
- vi を使いやすくするため、 半角/全角キーも ESC に割り当てる (for Ubuntu 14.04)
- Xmodmap によるキーマップの変更は Ubuntu 14.04 では使えなかった。
- ここを参考に xkb でキーマップを変更する
vi で編集中に誤って ctrl-z で抜けてしまった時の対処 ---- ctrl-z は処理を終了せず中断させた状態†
- 中断中のジョブを確認するのは、jobs コマンドです。
- 中断したジョブを再開させるのは、fg コマンドです。
- 中断したジョブを強制終了させるには、kill コマンドです。
- 中断中のまま強制終了したり、ウィンドウを閉じてしまうと viが編集中状態を保持していますので vi -r でリカバリが必要
vi で編集中に誤って ctrl-s を押してキー操作をロックさせてしまった時の対処†
画面の分割†
- 左右分割 = :vs (:vsplit)
- 上下分割 = :sp (:split)
- ファイルの読み込み = :e ファイル名
- フォーカスの切り替え = [CTRL] + W, G(左)/ J(下)/ H(上)/ L(右)
- リサイズ = [CTRL] + +(拡大)/ -(縮小)/ =(均等)
vimgrep の使い方†
vi の強制保存(sudo を付けずに起動した時に後から sudo する方法)†
- Vimのコマンドで「:w」とする代わりに、「:w !sudo tee % > /dev/null」
- vim-plug は vim のプラグインを管理するソフトウエアで Ubuntu repo には無いので github から直接設定する。
- vim 中で latex をコンパイルする為の vimtex の導入の為に vim-plug が必要となった。
----------------------------------------------------------------------------
" Add setting for vim-plug (https://github.com/junegunn/vim-plug)
" Light weight & automated plug-in manager for vim
"----------------------------------------------------------------------------
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
" Make sure you use single quotes
" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
Plug 'junegunn/vim-easy-align'
" Any valid git URL is allowed
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
" Multiple Plug commands can be written in a single line using | separators
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Using a non-master branch
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug 'fatih/vim-go', { 'tag': '*' }
" Plugin options
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
" Plugin outside ~/.vim/plugged with post-update hook
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
" Unmanaged plugin (manually installed and updated)
Plug '~/my-prototype-plugin'
" vimtex
Plug 'lervag/vimtex'
" Initialize plugin system
call plug#end()
- call plug#begin() から call plug#end() の間で管理する plug-in を記述する
- 今回は vintex の呼び出しを追加している
- vim を起動してコマンドモードで :PlugInstall を実行すると plug-inn が自動インストールされる
- vim-plug のコマンド例、詳細は ここ
| Commands | Command Description |
| PlugInstall [name ...] [#threads] | Install plugins |
| PlugUpdate [name ...] [#threads] | Install or update plugins |
| PlugClean[!] | Remove unused directories (bang version will clean without prompt) |
| PlugUpgrade | Upgrade vim-plug itself |
| PlugStatus | Check the status of plugins |
| PlugDiff | Examine changes from the previous update and the pending changes |
| PlugSnapshot[!] [output path] | Generate script for restoring the current snapshot of the plugins |
参考 URL†