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
880
Java研修成果発表
muras
0
720
Other Decks in Technology
See All in Technology
Docker Desktop で Docker を始めよう
zembutsu
PRO
0
180
Bring Your Own Container: When Containers Turn the Key to EDR Bypass/byoc-avtokyo2024
tkmru
0
860
RubyでKubernetesプログラミング
sat
PRO
4
160
東京Ruby会議12 Ruby と Rust と私 / Tokyo RubyKaigi 12 Ruby, Rust and me
eagletmt
3
870
今から、 今だからこそ始める Terraform で Azure 管理 / Managing Azure with Terraform: The Perfect Time to Start
nnstt1
0
240
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!事例のご紹介+座学②
siyuanzh09
0
110
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
360
EMConf JP の楽しみ方 / How to enjoy EMConf JP
pauli
2
150
Amazon Route 53, 待ちに待った TLSAレコードのサポート開始
kenichinakamura
0
170
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
2
490
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
2
150
Building Scalable Backend Services with Firebase
wisdommatt
0
110
Featured
See All Featured
Music & Morning Musume
bryan
46
6.3k
What's in a price? How to price your products and services
michaelherold
244
12k
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Language of Interfaces
destraynor
155
24k
Unsuck your backbone
ammeep
669
57k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Site-Speed That Sticks
csswizardry
3
270
How to Think Like a Performance Engineer
csswizardry
22
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
GraphQLとの向き合い方2022年版
quramy
44
13k
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を説明しました。 今日紹介したうちのいくつかでも取り入れてもらって、効率や快 適さが上がれば幸いです。 まとめ