「これからはじめるvim」の版間の差分
提供: neovim/vim入門
(→関連項目) |
|||
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | [[vim]]とは、非常にパワフルなエディタの1つです。[[vim]]は、[[vi]] | + | [[vim]]とは、非常にパワフルなエディタの1つです。[[vim]]は、[[vi]]を機能拡張したものです。ここでは、標準以外の[[vimスクリプト]]も出てきますが、基本的には[[vim]](もしくは[[vi]])の標準的なコマンドを中心に扱います。[[vim]]は、標準でも十分にパワフルですし、1行設定を加えるだけで、さらに力を発揮できるようになります。 |
'''読み方''' | '''読み方''' | ||
行586: | 行586: | ||
== 関連項目 == | == 関連項目 == | ||
− | {{basic]] | + | {{basic}} |
+ | * [[メインページ]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
> | > |
2017年6月18日 (日) 21:40時点における最新版
vimとは、非常にパワフルなエディタの1つです。vimは、viを機能拡張したものです。ここでは、標準以外のvimスクリプトも出てきますが、基本的にはvim(もしくはvi)の標準的なコマンドを中心に扱います。vimは、標準でも十分にパワフルですし、1行設定を加えるだけで、さらに力を発揮できるようになります。
読み方
- vim
- ぶいあいえむ、びむ
- vi
- ぶいあい
目次
- 1 概要
- 2 イントロダクション/能書き
- 3 エディタ
- 4 前提となってる設定
- 5 モード
- 6 ヘルプ
- 7 チュートリアル
- 8 エスケープ
- 9 移動系
- 10 編集系
- 11 ヤンク
- 12 シフト
- 13 フォーマットする
- 14 (インクリ|デクリ)メント
- 15 検索/search
- 16 マーク
- 17 バッファを操る
- 18 バッファリスト
- 19 argdo
- 20 コマンドを実行する
- 21 insert モード
- 22 挿入モードとレジスタ
- 23 挿入モードでも、画面を動かす
- 24 ex-mode で楽をする
- 25 画面分割
- 26 入力補完
- 27 アンドゥ リドゥ
- 28 visual mode
- 29 text-object
- 30 tab
- 31 プログラミング
- 32 make
- 33 omni
- 34 PHP
- 35 php 文法チェック
- 36 perl 文法チェック
- 37 便利系?
- 38 vimdiff
- 39 vim で man を見る
- 40 ファイルを開くときの補完
- 41 vimgrep
- 42 行番号を表示してみる
- 43 ファイラ
- 44 vim エラーメッセージ
- 45 ファイルフォーマット
- 46 関連項目
概要
ここで説明する機能は、viで使用できないものもあるため、vimではなく、純粋なviを使用している場合には注意が必要です。 この文章を説明する内容は、だいたい以下の通りです。
- イントロダクション/能書き
- 移動系
- 編集系
- サーチ
- マーク
- Visual系
- 補完
- undo
- バッファ
このドキュメントの対象者は、vimを使い始めて、少し慣れた人です。
イントロダクション/能書き
- vim はパワフル
- vim との会話(コマンド)が必要
- 想像できることは、なんでもできる、かも
- コマンドは解りにくいし、難しい
- でも、やっぱり素晴らしい
- 「それ、〇〇○で出来るよ」
- 「それ、Vimで出来るよ」
エディタ
- vim
- emacs
- notepad.exe
- ...
- いろいろあるけど、好きなものを使えばいい
- 機能を覚えて、使えること・技を増やして、効率化するのが大事
前提となってる設定
いろいろと設定をいじってある環境のせいで、デフォルトの動きと違うかもしれません。
set nocompatible
モード
vi はモードがあるエディタです。
- 通常モード
- 挿入モード
- コマンドライン
- ビジュアルモード
ヘルプ
- ヘルプは、非常に充実している
- :help
- grep だってできる
-
:helpgrep XXX
- copen/cnext/cprev/cclose
チュートリアル
まずは、一度はやってみた方が良いです。
vimtutor
エスケープ
モードの切り替えに使う
- わからなくなったらとりあえず esc を連射
- 普通のkbdだとホームポジションからズレる
- C-[ は esc と同じ
- ホームポジションが崩れない
移動系
- h j k l
- カーソルキーは使わない
- ホームポジションから外れる
- viを使ってる意味があるのか?
b B w W e ge gE
C-f C-b C-u C-d C-y C-e
- g gg G
- go
- g gj gk g0 g$
- gd gD
- プログラムで。変数の場所。
- sample/cmd_exec/a.c
- gm
- gi
- g;
+ - <Enter>
{ } [[ ]] ( )
%
画面固定でカーソル移動
H L M
カーソル位置に画面移動
z<Enter> z. z-
編集系
- i I
- J gJ
- o O
- a A
- r R
- s S
- c C
- c$
- cw ct
- cW
- .
- d dd D dw db
- 大文字・小文字
- guu guw gUw g~w g~~
- hoge
- HOGE hoge
ヤンク
- y p P
- YankRing.vim
- display
シフト
-
>>
-
<<
フォーマットする
- gqap
- gqq
- gw
- gww
- gwap
ga ascii
(インクリ|デクリ)メント
- C-a
- C-x
dib function argument delete diB function body delete
検索/search
基本的な検索
- /
- n
- N
よりよい検索
- /do\|we
- /hoge/e
- set hlsearch
- set incsearch
もっと検索
- ?
- *
- #
- g*
- f
- F
- t
- T
- :g
- /\(where\|update\)
- /^\n\{2} search multi line
- search option
- /error\c
- set ignorecase
- set smartcase
マーク
m<a> `<a> `` :`a,.d
q @ i += 0; qa yy p w w C-a q @a 10@a
バッファを操る
- ls
- n
- N
- bn
- bp
- :b N
- C-^ (C-6)
バッファリスト
- buffer explorer - bufexplorer.vim
- bufferlist.vim
argdo
- cd sample/argdo/
- vim *
- argdo %s/bar/meta/g
コマンドを実行する
!
- example ... date / cal
-
r!
- !!
-
!sort c a b
sample/cmd_exec/Makefile
insert モード
- C-c
- C-a
- C-@
- C-w
- C-u
- C-i or Tab
- C-j
- C-m
挿入モードとレジスタ
- C-r #
- C-r %
- C-r /
- C-r . 最後に挿入したテキスト
- C-r : 最後のコマンドライン
- C-rC-W
- C-r =
- C-r 1
- ddしたコピー
挿入モードでも、画面を動かす
C-x C-x-e scroll window C-x-y scroll window
ex-mode で楽をする
- :C-f
- :C-p
- :C-n
- :C-d
- :<tab>
- @:
画面分割
:sp :vsp
C-w-w C-w-h C-w-j C-w-l C-w-l C-w-= C-w-+ C-w--
vim /etc/rc.conf /etc/hosts :sball
プラグイン ZoomWin.vim
入力補完
- C-p C-n
- C-x C-l
- C-x C-f
- C-x C-k dict
- C-x C-i C
.vimrc
autocmd FileType php :set dictionary=~/.vim/dict/php.dict
アンドゥ リドゥ
- u
- U
- C-r
- set undolevels=1000
visual mode
- v V C-v
- gv
-
'<
-
'>
text-object
- カーソルが最初にないなら
- b ve
- viw
- b dw
- diw
- b ve
- operater
- d, c, y
text-object キー 意味 w word s sentence p paragraph b () block B {} block < <> block [ [] block " "" block ' block is inner sentence as a sentence - sample/cmd_exec/a.cc
- /main di(
- /hoge/e di"
- /hoge/e da"
tab
- tabnew/tabnext/tabprevious/tabclose/tabonly
- gt/gT
- C-w gf
- tablist
nmap <Tab> :tabn<CR> nmap <S-Tab> :tabp<CR>
プログラミング
- %
- C-v } =
- [I include
- [i include first
- [D define
- [d define first
- sample/cmd_exec/a.c
-
[<tab>
- ビジュアルモードと組み合わせる
- insert mode
- C-t
- C-d
- プログラムでの移動
- ]/ コメントの終わりへ
- [/ コメントの最初へ
- [[ 関数のはじめ
- ]] 関数の終わり
- [] まえの関数の終わりへ
- ][ 次の関数の終わりへ
メソッドの前、後ろへ移動できます。
- [m
- [M
- ]m
- ]M
- ]#, [#
- ifdef HOGE #ifdef ZERO // 1 #else // 2 #endif #endif
#include <signal.h>
:ijump SIGINT
[ C-i と同じ
sample/cmd_exec/a.c
make
- vim から make を呼ぶ
- :make
- cd sample/make/
omni
- sample/omni/
- C-w ] 分割してタグジャンプ
- exctags -R /usr/include/ .
- psearch fopen
- pclose
- ptag
- ports/ctags
PHP
- php 文字列ハイライトと折りたたみ
au Syntax php set fdm=syntax
- " 文字列中のSQLをハイライト
let php_sql_query=1
- " 文字列中のHTMLをハイライト
let php_htmlInStrings=1
- " クラスと関数の折りたたみ
let php_folding=1
php 文法チェック
php -l foo.php
au Syntax php set makeprg=php\ -l\ % au Syntax php set errorformat=%m\ in\ %f\ on\ line\ %l
- sample/php/syntax_error.php
perl 文法チェック
perl -c %
便利系?
vimdiff
$ vim -d v1.cc v2.cc $ vimdiff v1.cc v2.cc
- sample/vimdiff
vim で man を見る
- K
- Man
- \K
- fopen
- ls
ファイルを開くときの補完
- コマンドライン補間をシェルのように
set wildmode=list:longest
vimgrep
- vimgrep world *
- vimgrep string\c *
- vimgrep c_str **/*.cc
- vimgrep /str/g *
cat<<<EOF>a.vim %s/<?/<?php/g write quite EOF
for f in *.php; do vim -e -s $f < a.vim done
ls | vim - # これは ls > /tmp/x; vim /tmp/x ls | vim -S b.vim -
行番号を表示してみる
set nu set nonu
ファイラ
:Explore
- コマンド - o p s i r -
- e ./
:enew
ls.vim http://www.vim.org/scripts/script.php?script_id=17 VTreeExplore.vim grep.vim B
vim エラーメッセージ
:messages
ファイルフォーマット
unix/dos
:set fileformat=unix " 省略形 :set ff=unix
- browse options
参考 http://www.vim.org/ function! TabOrCompletion()
let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\<TAB>" else return "\<C-N>" endif
endfunction
- inoremap <silent> <TAB> <C-R>=TabOrCompletion()<CR>
関連項目