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
770
0
Share
Vim Tips
muras
November 22, 2014
More Decks by muras
See All by muras
PipeCDを使用したBucketeerのGitOps-style CI/CD
muras
0
980
Java研修成果発表
muras
0
750
Other Decks in Technology
See All in Technology
AWS認定資格は本当に意味があるのか?
nrinetcom
PRO
2
270
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
120
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
120
実践ハーネスエンジニアリング:TAKTで実現するAIエージェント制御 / Practical Harness Engineering: AI Agent Control Enabled by TAKT
nrslib
11
4.6k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.9k
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
210
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
74k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.1k
AIでAIをテストする - 音声AIエージェントの品質保証戦略
morix1500
1
120
[OpsJAWS 40]リリースしたら終わり、じゃなかった。セキュリティ空白期間をAWS Security Agentで埋める
sh_fk2
3
240
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
360
QGISプラグイン CMChangeDetector
naokimuroki
1
400
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Exploring anti-patterns in Rails
aemeredith
3
320
Designing for humans not robots
tammielis
254
26k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
410
How to Talk to Developers About Accessibility
jct
2
180
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
510
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
270
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
490
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
270
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を説明しました。 今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ