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 - Precision editing at the speed of thought
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
nelstrom
November 07, 2012
Technology
6k
29
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vim - Precision editing at the speed of thought
nelstrom
November 07, 2012
More Decks by nelstrom
See All by nelstrom
Follow my leader
nelstrom
10
2.3k
Modelling State Machines with Ragel
nelstrom
11
25k
Vimprint - A Vim Keystroke Parser
nelstrom
1
1.2k
When & why you should stay out of visual mode
nelstrom
1
3.8k
This is the problem
nelstrom
1
290
Progressive enhancement - a barrier to progress?
nelstrom
1
660
Other Decks in Technology
See All in Technology
AI時代のデータ基盤を考える問い
pacocat
0
720
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
230
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
86k
IHV like なユースケースへのOpenID Connect 関連仕様の適用事例
optim
0
330
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
600
Claude Codeの体系的な理解と知識のフック
oikon48
6
5.7k
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
4
3.1k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
54k
ブラウザで変わるID連携(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
330
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.5k
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
1
510
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
460
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Accessibility Awareness
sabderemane
1
180
The World Runs on Bad Software
bkeepers
PRO
72
12k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
220
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
390
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
560
Paper Plane
katiecoart
PRO
2
53k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
VIM precision editing at the speed of thought Drew Neil,
@nelstrom November 7th 2012, Øredev
TWO REASONS YOU DIS VIM
1. You don’t grok Vim
1. You don’t grok Vim i don’t blame you
2. You confuse Vim with vi
2. You confuse Vim with vi shame on you
http://twitter.com/kentbrew/status/15419224013
MODAL INTERFACES
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
why modal?
MODAL INTERFACES are economical
None
None
In a MODAL interface Every BUTTON performs a different function
in each mode
In a TOUCH interface Every PIXEL performs a different function
in each mode
MODAL INTERFACES are everywhere
MODAL INTERFACES TextMate: ⌘F
None
MODAL INTERFACES TextMate: ⌘A
None
None
TextMate is a MODAL EDITOR
TextMate is a MODAL EDITOR not a very good one
MODAL INTERFACES are everywhere
h.koppdelaney http://www.flickr.com/photos/h-k-d/4490192739/
http://www.flickr.com/photos/katzarella/6378185339/
TARGET PRACTICE
None
MOUSE
None
the time required to rapidly move to a target area
is a function of the distance to and the size of the target FITT’S LAW
http://particletree.com/features/visualizing-fittss-law/
[duh] FITT’S LAW
http://particletree.com/features/visualizing-fittss-law/
while (!thereYet) { keepGoing(); }
http://www.flickr.com/photos/darwinbell/316668966/
HUNT & PECK
None
None
while (!thereYet) { keepGoing(); }
Photograph by Hannah Adcock
None
VIM: PREHISTORY
http://www.flickr.com/photos/splorp/6551397629/in/photostream/
None
None
while (!thereYet) { keepGoing(); }
PRECISION TARGETING
None
two steps along, then one step along the perpendicular axis
The Knight can move
to the closest squares that no other piece can reach
The Knight can move
None
None
None
FINDING CHARACTERS
FINDING CHARACTERS f{char} jumps to the next occurrence of {char}
The Knight can move to the closest squares that no
other piece can reach t
The Knight can move to the closest squares that no
other piece can reach t
The Knight can move to the closest squares that no
other piece can reach t v f p The Knight can move to the closest squares that no other piece can reach p
http://www.flickr.com/photos/silkegb/2745580110/
The Knight can move to the closest squares that no
other piece can reach t
The Knight can move to the closest squares that no
other piece can reach t
The Knight can move to the closest squares that no
other piece can reach t The Knight can move to the closest squares that no other piece can reach t v f t
The Knight can move to the closest squares that no
other piece can reach t The Knight can move to the closest squares that no other piece can reach t v f t ;
The Knight can move to the closest squares that no
other piece can reach t The Knight can move to the closest squares that no other piece can reach t v f t ; ;
The Knight can move to the closest squares that no
other piece can reach t The Knight can move to the closest squares that no other piece can reach t v f t ; ; ;
I’ve been expecting you, Mr Bond. I
I’ve been expecting you, Mr Bond. I delete this
I’ve been expecting you, Mr Bond. I f , I’ve
been expecting you, Mr Bond. , delete this
I’ve been expecting you, Mr Bond. I f , I’ve
been expecting you, Mr Bond. , d t . I’ve been expecting you. . delete this
http://robots.thoughtbot.com/post/13164810557/the-vim-learning-curve-is-a-myth No one ever says “I’d love to learn Street
Fighter 2, but there are just so many combos!” Ben Orenstein
Illustration by Ben Cormack
Illustration by Ben Cormack
define regions of text by structure TEXT OBJECTS
“quotes” a” - a quoted string i” - inner quoted
string
(parentheses) a) - all of a (block) i) - inside
of a (block)
[brackets] a] - all of a [block] i] - inside
of a [block]
{braces} a} - all of a {block} i} - inside
of a {block}
<xml>tags</xml> at - all of a tag block it -
inside of a tag block
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } a
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } a v i
[
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } a refs: {
clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } e v i [
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } e i ‘
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } ]
a } refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } ]
refs: { clearButton: 'button[action=clearHomeBadge]', starButton: 'button[action=pingHomeBadge]' } }
http://www.flickr.com/photos/liquene/3177469139/
AUTOMATION
Illustration by Ben Cormack
QUESTIONS?
None