Slide 1

Slide 1 text

VIMの効率的な使い方

Slide 2

Slide 2 text

 Vimとは?  Vim特有の機能とその操作TIPS  その他の操作TIPS  Vimの拡張 今日話すこと

Slide 3

Slide 3 text

 Vimとは?  Vim特有の機能とその操作TIPS  その他の操作TIPS  Vimの拡張 今日話すこと 今日の目標: Vim特有の機能や操作TIPSを学んで、 より快適に編集するための道具を増やしてもらうこと

Slide 4

Slide 4 text

 Vim(ヴィムまたはヴィアイエム)は、viから派生し、発展した高 機能なテキストエディタである。(Wikipediaより)  Vi IMprovedの略  多くのLinuxディストリビューションでは、viをvimにalias  hjklによる操作、モード切替え、高いカスタマイズ性などが特徴 VIMとは? $ cat /etc/profile.d/vim.sh ID=`/usr/bin/id -u` [ -n "$ID" -a "$ID" -le 200 ] && return alias vi >/dev/null 2>&1 || alias vi=vim

Slide 5

Slide 5 text

VIM特有の機能と その操作TIPS

Slide 6

Slide 6 text

 ビジュアルモード  テキストオブジェクト  バッファ機能の拡張  ウインドウ機能、タブ機能  補完機能  無限undo、無限redo  シンタックスハイライト  Vimdiff  独自grepの内蔵、QuickFix などなど VIM特有の機能とその操作TIPS

Slide 7

Slide 7 text

 テキストを選択して、選択範囲を操作するためのモード  3種類のビジュアルモード  v: 文字単位のビジュアルモード  V: 行単位のビジュアルモード  : 矩形範囲のビジュアルモード ビジュアルモード

Slide 8

Slide 8 text

 選択範囲に対してd(削除),y(ヤンク),c(変更),コマンド等を使える  使い方の例:hoge_を一括で消す (f:行内の一致する文字へ移動。;で次の一致へ。,で前の一致へ。) ビジュアルモード ↓ d ↓ jjf_

Slide 9

Slide 9 text

 特定の文字に囲まれた領域をvimは認識する  ””で囲まれた領域、{}で囲まれた領域、htmlタグ、単語の境界など  i:囲まれた内部、a:囲んでいるものも含む  使い方の例:{}内を消して、挿入モードに入る  補足  d(削除),y(ヤンク),c(変更)+移動操作orテキストオブジェクト テキストオブジェクト ↓ ci{

Slide 10

Slide 10 text

 開いているファイルごとに割り当てられる領域  複数ファイルの同時編集で意識  バッファ間の行き来、さらにファイルを開くことが可能  操作方法  Shellから複数ファイルを開く  ファイル編集中に、別のファイルを開く。 viのコマンドラインで、 バッファ機能の拡張 $ vi main.rb test.sh :e test.sh

Slide 11

Slide 11 text

 操作方法(続き)  開いているバッファの確認  カレントバッファの切り替え b 数字: 指定したバッファに切り替え bn : 次のバッファに切り替え bp : 前のバッファに切り替え b # : 直前に開いていたバッファに切り替え  で(カレントウインドウの)すべてのバッファを閉じる バッファ機能の拡張 :ls :q

Slide 12

Slide 12 text

 複数のバッファを複数ウインドウや複数タブに分割  ウインドウの操作  シェルから横分割で開く ウインドウ機能、タブ機能 $ vi –o main.rb test.sh

Slide 13

Slide 13 text

 ウインドウの操作(続き)  シェルから縦分割で開く ウインドウ機能、タブ機能 $ vi –O main.rb test.sh

Slide 14

Slide 14 text

 ウインドウの操作(続き)  ファイル編集中に、別ファイルをウインドウ分割して開く 横分割: 縦分割:  ウインドウ間の移動 次のウインドウへ移動: 指定方向のウインドウへ移動: 、、 、 ウインドウ機能、タブ機能 :sp test.sh :vs test.sh

Slide 15

Slide 15 text

 タブの操作  シェルから開く ウインドウ機能、タブ機能 $ vi –p main.rb test.sh main2.rb

Slide 16

Slide 16 text

 タブの操作(続き)  ファイル編集中に、別ファイルをタブ分割で開く  タブ間の移動 次のタブへ移動: gt 前のタブへ移動: gT 3番目タブへ移動: 3gt  で全てのタブやウインドウを一気に閉じる ウインドウ機能、タブ機能 :tabnew test.sh :qa

Slide 17

Slide 17 text

 挿入モード時に使える、IDEのようなテキスト補完機能  開いている全てのバッファ中に出現する文字列を補完可能  ファイル名補完、オムニ補完など高機能な補完もある(今回は省略)  操作方法  or で補完ウインドウを出す  この状態で、 : 次の候補へ : 前の候補へ  or 文字を入力すると決定  で補完のキャンセル 補完機能

Slide 18

Slide 18 text

 undo(元に戻す)、redo(やり直し)を何度も繰り返すことができる  操作方法 ノーマルモードで、 u: undo : redo また、Uで最後に編集した行の変更を全て元に戻す  undo、redo以外もそうだが、対称操作をペアで覚えるとよい 無限UNDO、無限REDO

Slide 19

Slide 19 text

 プログラミング言語のファイルなどで、テキスト中の一部分をそ の分類ごとに異なる色やフォントで表示するもの シンタックスハイライト

Slide 20

Slide 20 text

 diffをvim上で見ることができる VIMDIFF $ vimdiff main.rb main_diff.rb

Slide 21

Slide 21 text

 vimのコマンドラインからgrepが使える  結果がQuickFixリスト(:grep, :make等の結果リスト)に入る  操作方法  コマンドモードでgrep or  でQuickFixリストを開く  カーソルを合わせてEnterで、対象のファイルを開く 独自GREPの内蔵、QUICKFIX :grep hoge * :copen :vim hoge *

Slide 22

Slide 22 text

その他の操作TIPS

Slide 23

Slide 23 text

 ドット(.)コマンドによる直前の操作(移動以外)の繰り返し  以下のファイルのhoge_map,hoge_array,hoge_stringをtestに変換する  ドット(.)コマンドは色々な場面で有効に使える その他の操作TIPS ↓ ciwtest ↓ j.j.

Slide 24

Slide 24 text

 コマンドモードを使った一括変換  以下のファイルのhogeを全てtestに変換する を実行 その他の操作TIPS :%s/hoge/test/g

Slide 25

Slide 25 text

 コマンドモードを使った一括変換  以下のファイルの2~4行目のhogeを全てtestに変換する(その1) を実行 その他の操作TIPS :2,4s/hoge/test/g

Slide 26

Slide 26 text

 コマンドモードを使った一括変換  以下のファイルの2~4行目のhogeを全てtestに変換する(その2) 行単位のビジュアルモード(V)で2~4行目を選択し、:を入力すると、 が表示されるので、 を実行 その他の操作TIPS :’<,’> :’<,’>s/hoge/test/g

Slide 27

Slide 27 text

 ビジュアルモードを使った複数行コメントアウト  以下のファイルの2~4行目を一気にコメントアウト 矩形範囲のヴィジュアルモード(V)で2~4行目のhを選択 I(大文字i)で挿入モードに入り、# (シャープ+space+esc) 2~4行目に、# (シャープ+スペース)が追加されている その他の操作TIPS

Slide 28

Slide 28 text

 アスタリスク(*)による検索  以下の位置にカーソルがあるときにhogeを検索 ノーマルモードで*を入力 カーソルがある位置の単語が検索される ただし/¥で検索されるので注意(¥<,¥>は単語境界に一致) その他の操作TIPS

Slide 29

Slide 29 text

 パーセント(%)にペアの括弧への移動  以下の位置にカーソルがあるときに}へ移動 ノーマルモードで%を入力 もう一度%を入力 その他の操作TIPS

Slide 30

Slide 30 text

 ヤンクレジスタを使う  y(ヤンク)やd(削除)したものはレジスタに入る  ノーマルモードでpを押すとレジスタ(無名レジスタ)から挿入される  Vimは複数のレジスタを持っている コマンドモードで を打つと確認できる その他の操作TIPS :reg

Slide 31

Slide 31 text

 ヤンクレジスタを使う(続き)  y(ヤンク)後にp(ペースト)しようと思っているときに、先にd(削除)をし てしまうと無名レジスタ(“”)が上書きされてしまう  この場合でもヤンクレジスタ(“0)は上書きされない  “0pでヤンクしたものをペーストすることができる その他の操作TIPS

Slide 32

Slide 32 text

 直前にいた位置に移動する  で位置に移動できる  複数回さかのぼることも可能  バッファをこえて移動も可能  の対称操作は  直前に編集した位置に移動する  g;で移動できる  複数回さかのぼることも可能  対称操作はg, その他の操作TIPS

Slide 33

Slide 33 text

 Vimの操作でないが…  コントロールパネルでキーボード入力の反映速度を速くする その他の操作TIPS

Slide 34

Slide 34 text

VIMの拡張

Slide 35

Slide 35 text

 Vimは起動時に/etc/vimrcや~/.vimrcを読み込む  Vimを拡張する場合は、~/.vimrcに記述  .vimrcには、コマンドモードのコマンドやvimscriptを記述できる  例: VIMの拡張

Slide 36

Slide 36 text

 文字コード自動判別の例(.vimrc)  Vimのエンコーディングはeucjp  ファイルを開く時に、ファイルのエンコーディングをfileencodingsの 値と比較していき、一致したらiconvでeucjpに変換  iconvで変換できない文字が含まれていると文字化けしてしまう  .vimrcを読み込まずにvimを開く VIMの拡張 set encoding=eucjp set fileencodings=iso-2022-jp,sjis,utf-8,euc-jp $ vi –u NONE ファイル名

Slide 37

Slide 37 text

 Vimのプラグイン  Vimを拡張するために書いたvimscriptをモジュール化したもの  Githubなどで多くのプラグインが公開されている  プラグインの導入方法: ~/.vim以下に配備 or プラグイン管理用のプラグインを使う  自動補完、ファイルエクスプローラー、テキストオブジェクトの拡張 など色々なプラグインが公開されている VIMの拡張

Slide 38

Slide 38 text

VIMの拡張  こんな感じに拡張している人もいるようです…

Slide 39

Slide 39 text

 Wikipedia  コマンドモードで など  vimチュートリアル。シェルで  各種ブログ記事  Vim-jp http://vim-jp.org/  書籍「実践Vim」 http://tatsu-zine.com/books/practical-vim 参考情報 :help :help buffer $ vimtutor

Slide 40

Slide 40 text

 Vim特有の機能や効率を上げるための操作TIPSを説明しました。  今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ