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
740
Vim Tips
muras
November 22, 2014
Tweet
Share
More Decks by muras
See All by muras
PipeCDを使用したBucketeerのGitOps-style CI/CD
muras
0
940
Java研修成果発表
muras
0
730
Other Decks in Technology
See All in Technology
20250818_KGX・One Hokkaidoコラボイベント
tohgeyukihiro
0
110
プロダクトエンジニアリングで開発の楽しさを拡張する話
barometrica
0
210
datadog-distribution-of-opentelemetry-collector-intro
tetsuya28
0
120
Amazon Bedrock AgentCore でプロモーション用動画生成エージェントを開発する
nasuvitz
2
140
キャリアを支え組織力を高める「多層型ふりかえり」 / 20250821 Kazuki Mori
shift_evolve
PRO
2
130
GCASアップデート(202506-202508)
techniczna
0
210
AIに頼りすぎない新人育成術
cuebic9bic
3
330
o11yツールを乗り換えた話
tak0x00
2
1.7k
20250807 Applied Engineer Open House
sakana_ai
PRO
2
620
Google Agentspaceを実際に導入した効果と今後の展望
mixi_engineers
PRO
3
810
【OptimizationNight】数理最適化のラストワンマイルとしてのUIUX
brainpadpr
2
550
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
6
530
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Into the Great Unknown - MozCon
thekraken
40
2k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
A Tale of Four Properties
chriscoyier
160
23k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Site-Speed That Sticks
csswizardry
10
770
4 Signs Your Business is Dying
shpigford
184
22k
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を説明しました。 今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ