プログラミングを効率よく作成するにはテキストエディターの使い勝手に大きく影響されます。
特定の言語でをその言語に特化した統合環境の優れたエディターを内蔵しています。
ターミナル上のエディター「vi」の操作性と機能を受け継ぐ高機能なテキストエディターとして 「Vim」は複数のモードとコマンドを組み合わせて快適な作業性を実現します。
■モード
1 2 3 4 5 |
// モード i 挿入モードへ o 新しい行を追加し挿入モードへ R 置き換え(上書き)モードへ ESC 編集モードへ |
■カーソル移動
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//カーソル移動 h ← j ↓ k ↑ l → Ctrl+d 半画面下に移動 Ctrl+u 半画面上に移動 $ 行末に移動 ^ / 0 行頭に移動 w 次の単語に移動 zz カーソルが画面中央になるようにスクロール b 前の単語に移動 f(文字) 今カーソルがある行のその(文字)に移動 F(文字) 今カーソルがある行のその(文字)に移動(逆向き) % 対応する括弧に移動 Ctrl+g ファイル中の現在の場所を知る |
■編集
1 2 3 4 5 6 7 8 9 10 |
//編集 J 行の連結 D カーソル位置から行末まで削除 yy / Y カーソルのある行をコピー dd / D カーソルのある行を切り取り x カーソルの下にある文字を削除 p 貼り付け . 直前の変更を繰り返す u アンドゥ Ctrl+r リドゥ |
■ファイル
1 2 3 4 5 6 7 8 9 |
// ファイル :q 終了(:q!で保存せずに強制終了) :w file file という名前で保存 ZZ 保存して閉じる :set fileencoding=utf-8 文字コードの指定 :cd path カレントディレクトリを path に設定 :pwd カレントディレクトリを表示 :help index vim コマンドの全目次を見る gf カーソル位置にある文字列をファイル名とみなして開く |
■検索と置換
1 2 3 4 5 6 7 |
// 検索と置換 /word word を検索(n で次の候補、N で前の候補) ?word word を逆方向に検索 * カーソル位置にある単語を検索 :%s/four/4/g 単語の置換(four を 4 へ置換) :set ignorecase 大文字小文字を無視(:set noignorecase で戻る) :set hlsearch ヒット結果のハイライト表示 |
■領域選択
1 2 3 4 5 6 7 |
// 領域選択 v 領域選択スタート Ctrl + v 矩形選択スタート Shift + v 行選択スタート y コピー d 切り取り = 選択領域をオートインデント |
■タグ移動
1 2 3 4 5 6 |
// タグ移動 :tag function 関数 function へ移動 :tags タグリストを表示 :tag タグリストの先頭へ移動 Ctrl+] カーソル行の関数定義位置へ移動 Ctrl+T 直前のタグへ戻る |
■ウィンドウ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ウィンドウ :split 画面を上下に分割する :vsplit 画面を左右に分割する :close ウィンドウを閉じる :new filename 新規ウィンドゥ作成(垂直方向) :vnew filename 新規ウィンドゥ作成(水平方向) :e filename 今いるウィンドゥにファイルを開く :q ウィンドゥの削除 :hide ウィンドゥを隠す(バッファには残る) Ctrl+w + ウィンドゥを拡大 Ctrl+w - ウィンドゥを縮小 Ctrl+w w 別のウィンドゥへ移動 Ctrl+w k 上のウィンドゥへ移動 Ctrl+w j 下のウィンドゥへ移動 Ctrl+w h 左のウィンドゥへ移動 Ctrl+w l 右のウィンドゥへ移動 Ctrl+w r 左右/上下のウィンドゥを入れ替え |
■buffer(バッファ管理)
1 2 3 4 5 6 |
// buffer(バッファ管理) :ls バッファ一覧を表示 b buffnum 今いる window に特定のバッファを呼び出す :bd buffnum そのバッファを削除 :bn 次のバッファに移動 :bp 前のバッファに移動 |
■register(レジスタ管理)
1 2 3 4 5 |
// register(レジスタ管理) "ay 選択範囲をレジスタ a に保存 "ayy 今いる行をレジスタ a に保存 "ap レジスタ a の内容をカーソル位置にペースト :reg レジスタに格納されている情報を一覧表示 |
■mark(マーク)
1 2 3 4 |
// mark(マーク) ma 現在のカーソル位置をマーク名 a に保存 'a マーク名 a の位置に移動 :marks マークの一覧を表示する |
■folding(折りたたみ)
1 2 3 |
// folding(折りたたみ) zf 選択領域を折りたたむ スペース 折りたたみを展開する |
■word completion(単語補完)
1 2 3 |
word completion(単語補完) Ctrl+p 単語補完(前方検索) Ctrl+n 単語補完(後方検索) |
■recording(操作記憶)
1 2 3 4 5 |
// recording(操作記憶) qa 操作の記録を開始し、レジスタ a に保存する q 操作の記録を終了する @a レジスタ a に保存された操作を再生する 5@a レジスタ a に保存された操作を 5 回再生する |
■外部コマンドとの連携
1 2 3 |
// 外部コマンドとの連携 :!command 外部コマンド実行(領域指定すると出力も取込) :r!command 外部コマンド実行(カーソル位置へ出力挿入) |
.vimrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
" vi互換モードをオフにする set nocompatible " 動画撮影用設定 set cursorline set nobackup set autowrite set laststatus=2 set ignorecase set shiftwidth=4 set expandtab set shiftround set cinoptions=:0 set statusline=%n%F%([%Y]%)%m%h%w%r%=%l/%L\ %c%V set pastetoggle=<F10> set wildmenu " 文字コード設定 set encoding=utf-8 set fileencodings=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932 " UTF-8の□や○でカーソル位置がずれないようにする if exists("&ambiwidth") set ambiwidth=double endif " 改行コードの自動認識 set fileformats=unix,dos,mac " allow backspacing over everything in insert mode set backspace=indent,eol,start set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands set incsearch " do incremental searching " Don't use Ex mode, use Q for formatting map Q gq " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif " Only do this part when compiled with support for autocommands. if has("autocmd") " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. " Also load indent files, to automatically do language-dependent indenting. filetype plugin indent on " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au! " For all text files set 'textwidth' to 78 characters. " autocmd FileType text setlocal textwidth=78 " autocmd BufRead *.txt let w:m1=matchadd('LineProximity', '\%<81v.\%>75v', -1) " autocmd BufRead *.txt let w:m2=matchadd('LineOverflow', '\%>80v.\+', -1) " When editing a file, always jump to the last known cursor position. " Don't do it when the position is invalid or when inside an event handler " (happens when dropping a file on gvim). autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif augroup END else set autoindent " always set autoindenting on endif " has("autocmd") |