Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vim Tips
Search
muras
November 22, 2014
Technology
0
730
Vim Tips
muras
November 22, 2014
Tweet
Share
More Decks by muras
See All by muras
PipeCDを使用したBucketeerのGitOps-style CI/CD
muras
0
910
Java研修成果発表
muras
0
720
Other Decks in Technology
See All in Technology
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.5k
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
現場で役立つAPIデザイン
nagix
33
12k
Platform Engineeringは自由のめまい
nwiizo
4
2.1k
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
130
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
720
RECRUIT TECH CONFERENCE 2025 プレイベント【高橋】
recruitengineers
PRO
0
160
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
100
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
2.1k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
250
ユーザーストーリーマッピングから始めるアジャイルチームと並走するQA / Starting QA with User Story Mapping
katawara
0
200
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
530
Featured
See All Featured
The Language of Interfaces
destraynor
156
24k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
We Have a Design System, Now What?
morganepeng
51
7.4k
GraphQLとの向き合い方2022年版
quramy
44
13k
Making Projects Easy
brettharned
116
6k
How to Ace a Technical Interview
jacobian
276
23k
Adopting Sorbet at Scale
ufuk
74
9.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Transcript
VIMの効率的な使い方
Vimとは? Vim特有の機能とその操作TIPS その他の操作TIPS Vimの拡張 今日話すこと
Vimとは? Vim特有の機能とその操作TIPS その他の操作TIPS Vimの拡張 今日話すこと 今日の目標:
Vim特有の機能や操作TIPSを学んで、 より快適に編集するための道具を増やしてもらうこと
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
VIM特有の機能と その操作TIPS
ビジュアルモード テキストオブジェクト バッファ機能の拡張 ウインドウ機能、タブ機能 補完機能
無限undo、無限redo シンタックスハイライト Vimdiff 独自grepの内蔵、QuickFix などなど VIM特有の機能とその操作TIPS
テキストを選択して、選択範囲を操作するためのモード 3種類のビジュアルモード v: 文字単位のビジュアルモード V: 行単位のビジュアルモード
<C-v>: 矩形範囲のビジュアルモード ビジュアルモード
選択範囲に対してd(削除),y(ヤンク),c(変更),コマンド等を使える 使い方の例:hoge_を一括で消す (f:行内の一致する文字へ移動。;で次の一致へ。,で前の一致へ。) ビジュアルモード ↓ d ↓ <C-v>jjf_
特定の文字に囲まれた領域をvimは認識する ””で囲まれた領域、{}で囲まれた領域、htmlタグ、単語の境界など i:囲まれた内部、a:囲んでいるものも含む 使い方の例:{}内を消して、挿入モードに入る 補足
d(削除),y(ヤンク),c(変更)+移動操作orテキストオブジェクト テキストオブジェクト ↓ ci{
開いているファイルごとに割り当てられる領域 複数ファイルの同時編集で意識 バッファ間の行き来、さらにファイルを開くことが可能 操作方法 Shellから複数ファイルを開く
ファイル編集中に、別のファイルを開く。 viのコマンドラインで、 バッファ機能の拡張 $ vi main.rb test.sh :e test.sh
操作方法(続き) 開いているバッファの確認 カレントバッファの切り替え b 数字: 指定したバッファに切り替え bn
: 次のバッファに切り替え bp : 前のバッファに切り替え b # : 直前に開いていたバッファに切り替え で(カレントウインドウの)すべてのバッファを閉じる バッファ機能の拡張 :ls :q
複数のバッファを複数ウインドウや複数タブに分割 ウインドウの操作 シェルから横分割で開く ウインドウ機能、タブ機能 $ vi –o
main.rb test.sh
ウインドウの操作(続き) シェルから縦分割で開く ウインドウ機能、タブ機能 $ vi –O main.rb test.sh
ウインドウの操作(続き) ファイル編集中に、別ファイルをウインドウ分割して開く 横分割: 縦分割: ウインドウ間の移動 次のウインドウへ移動: <C-w><C-w>
指定方向のウインドウへ移動: <C-w><C-h>、<C-w><C-j>、 <C-w><C-k>、<C-w><C-l> ウインドウ機能、タブ機能 :sp test.sh :vs test.sh
タブの操作 シェルから開く ウインドウ機能、タブ機能 $ vi –p main.rb test.sh
main2.rb
タブの操作(続き) ファイル編集中に、別ファイルをタブ分割で開く タブ間の移動 次のタブへ移動: gt 前のタブへ移動: gT
3番目タブへ移動: 3gt で全てのタブやウインドウを一気に閉じる ウインドウ機能、タブ機能 :tabnew test.sh :qa
挿入モード時に使える、IDEのようなテキスト補完機能 開いている全てのバッファ中に出現する文字列を補完可能 ファイル名補完、オムニ補完など高機能な補完もある(今回は省略) 操作方法 <C-n>
or <C-p>で補完ウインドウを出す この状態で、 <C-n>: 次の候補へ <C-p>: 前の候補へ <C-y> or 文字を入力すると決定 <C-e>で補完のキャンセル 補完機能
undo(元に戻す)、redo(やり直し)を何度も繰り返すことができる 操作方法 ノーマルモードで、 u: undo <C-r>: redo また、Uで最後に編集した行の変更を全て元に戻す
undo、redo以外もそうだが、対称操作をペアで覚えるとよい 無限UNDO、無限REDO
プログラミング言語のファイルなどで、テキスト中の一部分をそ の分類ごとに異なる色やフォントで表示するもの シンタックスハイライト
diffをvim上で見ることができる VIMDIFF $ vimdiff main.rb main_diff.rb
vimのコマンドラインからgrepが使える 結果がQuickFixリスト(:grep, :make等の結果リスト)に入る 操作方法 コマンドモードでgrep or
でQuickFixリストを開く カーソルを合わせてEnterで、対象のファイルを開く 独自GREPの内蔵、QUICKFIX :grep hoge * :copen :vim hoge *
その他の操作TIPS
ドット(.)コマンドによる直前の操作(移動以外)の繰り返し 以下のファイルのhoge_map,hoge_array,hoge_stringをtestに変換する ドット(.)コマンドは色々な場面で有効に使える その他の操作TIPS ↓ ciwtest<esc> ↓
j.j.
コマンドモードを使った一括変換 以下のファイルのhogeを全てtestに変換する を実行 その他の操作TIPS :%s/hoge/test/g
コマンドモードを使った一括変換 以下のファイルの2~4行目のhogeを全てtestに変換する(その1) を実行 その他の操作TIPS :2,4s/hoge/test/g
コマンドモードを使った一括変換 以下のファイルの2~4行目のhogeを全てtestに変換する(その2) 行単位のビジュアルモード(V)で2~4行目を選択し、:を入力すると、 が表示されるので、 を実行 その他の操作TIPS :’<,’> :’<,’>s/hoge/test/g
ビジュアルモードを使った複数行コメントアウト 以下のファイルの2~4行目を一気にコメントアウト 矩形範囲のヴィジュアルモード(V)で2~4行目のhを選択 I(大文字i)で挿入モードに入り、# <esc>(シャープ+space+esc) 2~4行目に、# (シャープ+スペース)が追加されている その他の操作TIPS
アスタリスク(*)による検索 以下の位置にカーソルがあるときにhogeを検索 ノーマルモードで*を入力 カーソルがある位置の単語が検索される ただし/¥<hoge¥>で検索されるので注意(¥<,¥>は単語境界に一致) その他の操作TIPS
パーセント(%)にペアの括弧への移動 以下の位置にカーソルがあるときに}へ移動 ノーマルモードで%を入力 もう一度%を入力 その他の操作TIPS
ヤンクレジスタを使う y(ヤンク)やd(削除)したものはレジスタに入る ノーマルモードでpを押すとレジスタ(無名レジスタ)から挿入される Vimは複数のレジスタを持っている コマンドモードで を打つと確認できる
その他の操作TIPS :reg
ヤンクレジスタを使う(続き) y(ヤンク)後にp(ペースト)しようと思っているときに、先にd(削除)をし てしまうと無名レジスタ(“”)が上書きされてしまう この場合でもヤンクレジスタ(“0)は上書きされない “0pでヤンクしたものをペーストすることができる その他の操作TIPS
直前にいた位置に移動する <C-o>で位置に移動できる 複数回さかのぼることも可能 バッファをこえて移動も可能 <C-o>の対称操作は<C-i>
直前に編集した位置に移動する g;で移動できる 複数回さかのぼることも可能 対称操作はg, その他の操作TIPS
Vimの操作でないが… コントロールパネルでキーボード入力の反映速度を速くする その他の操作TIPS
VIMの拡張
Vimは起動時に/etc/vimrcや~/.vimrcを読み込む Vimを拡張する場合は、~/.vimrcに記述 .vimrcには、コマンドモードのコマンドやvimscriptを記述できる 例: VIMの拡張
文字コード自動判別の例(.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 ファイル名
Vimのプラグイン Vimを拡張するために書いたvimscriptをモジュール化したもの Githubなどで多くのプラグインが公開されている プラグインの導入方法: ~/.vim以下に配備 or
プラグイン管理用のプラグインを使う 自動補完、ファイルエクスプローラー、テキストオブジェクトの拡張 など色々なプラグインが公開されている VIMの拡張
VIMの拡張 こんな感じに拡張している人もいるようです…
Wikipedia コマンドモードで など vimチュートリアル。シェルで 各種ブログ記事
Vim-jp http://vim-jp.org/ 書籍「実践Vim」 http://tatsu-zine.com/books/practical-vim 参考情報 :help :help buffer $ vimtutor
Vim特有の機能や効率を上げるための操作TIPSを説明しました。 今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ