Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Vim - Precision editing at the speed of thought
nelstrom
November 07, 2012
Technology
29
5k
Vim - Precision editing at the speed of thought
nelstrom
November 07, 2012
Tweet
Share
More Decks by nelstrom
See All by nelstrom
Follow my leader
nelstrom
9
1.7k
Modelling State Machines with Ragel
nelstrom
11
24k
Vimprint - A Vim Keystroke Parser
nelstrom
1
870
When & why you should stay out of visual mode
nelstrom
1
3.1k
This is the problem
nelstrom
1
240
Progressive enhancement - a barrier to progress?
nelstrom
1
580
Other Decks in Technology
See All in Technology
リファインメントは楽しいかね?
kitamu_mu
1
380
What's new in Vision
satotakeshi
0
190
インフラのCI/CDはGitHub Actionsに任せた
mihyon
0
110
ひとりでも安定して 組織を変える活動を続けていくための ストレスマネジメント
pastelinc
0
810
サーバレスECにおける Step Functions の使い方 〜ステートマシン全部見せます!〜
miu_crescent
0
180
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
260
Design for Humans: How to make better modernization decisions
indualagarsamy
2
120
Persistence in Serverless Applications - ServerlessDays NYC
marcduiker
0
210
JDK Flight Recorder入門
chiroito
1
500
スクラムのスケールとチームトポロジー / Scaled Scrum and Team Topologies
daiksy
1
420
要約 "Add Live Text interaction to your app"
ushisantoasobu
0
140
セキュリティ 開運研修2022 / security 2022
cybozuinsideout
PRO
3
3.6k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
319
19k
Code Reviewing Like a Champion
maltzj
506
37k
Side Projects
sachag
450
37k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Designing for Performance
lara
597
63k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
172
8.4k
Automating Front-end Workflow
addyosmani
1351
200k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Art, The Web, and Tiny UX
lynnandtonic
280
17k
YesSQL, Process and Tooling at Scale
rocio
157
12k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
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