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
730
Other Decks in Technology
See All in Technology
LangGraphを使ったAIエージェント実装
iwakiyusaku
1
170
エンジニア採用と 技術広報の実践/acaricsummit2025
nishiuma
1
200
プラクティスの名前は言わない方がいい / Not to mention the name of the practice
3l4l5
8
3.3k
組織に持ち込む脅威モデリング
nikinusu
2
650
非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers
ykanoh
12
2.8k
セキュリティグループの”タイプ”を改めて考えてみる
masakiokuda
0
160
Mastering MySQL - Tips and Best Practices for Developers
lefred
0
100
OPENLOGI Company Profile for engineer
hr01
1
21k
Webブラウザのセキュリティ対策に役立つぞ!!~DevToolsの使い方~
masakiokuda
0
160
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
100
EMの仕事、あるいは顧客価値創出のアーキテクト
radiocat
0
110
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
0
200
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
A better future with KSS
kneath
238
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
176
52k
A Tale of Four Properties
chriscoyier
158
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
How STYLIGHT went responsive
nonsquared
99
5.4k
Done Done
chrislema
182
16k
Agile that works and the tools we love
rasmusluckow
328
21k
Six Lessons from altMBA
skipperchong
27
3.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
430
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Faster Mobile Websites
deanohume
306
31k
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を説明しました。 今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ