「これからはじめるvim」の版間の差分

提供: neovim/vim入門
移動: 案内検索
(関連項目)
 
行587: 行587:
 
== 関連項目 ==
 
== 関連項目 ==
 
{{basic}}
 
{{basic}}
 +
* [[メインページ]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
>
 
>

2017年6月18日 (日) 21:40時点における最新版

vimとは、非常にパワフルなエディタの1つです。vimは、viを機能拡張したものです。ここでは、標準以外のvimスクリプトも出てきますが、基本的にはvim(もしくはvi)の標準的なコマンドを中心に扱います。vimは、標準でも十分にパワフルですし、1行設定を加えるだけで、さらに力を発揮できるようになります。

読み方

vim
ぶいあいえむ、びむ
vi
ぶいあい

概要

ここで説明する機能は、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-x
	C-x-e	scroll window
	C-x-y	scroll window

ex-mode で楽をする

画面分割

: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

入力補完

.vimrc

autocmd FileType php  :set dictionary=~/.vim/dict/php.dict

アンドゥ リドゥ

visual mode

text-object

text-object
キー 意味
w word
s sentence
p paragraph
b () block
B {} block
< <> block
[ [] block
" "" block
' block
is inner sentence
as a sentence

tab

nmap <Tab> :tabn<CR>
nmap <S-Tab> :tabp<CR>

プログラミング

メソッドの前、後ろへ移動できます。

  1. ifdef HOGE #ifdef ZERO // 1 #else // 2 #endif #endif
#include <signal.h>
:ijump SIGINT
[ C-i と同じ

sample/cmd_exec/a.c

make

omni

PHP

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

vim で man を見る

ファイルを開くときの補完

vimgrep

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
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>

関連項目

https://kaworu.jpn.org/vim/index.php?title=これからはじめるvim&oldid=263」から取得