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
nelstrom
November 07, 2012
Technology
29
5.8k
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
10
2.2k
Modelling State Machines with Ragel
nelstrom
11
24k
Vimprint - A Vim Keystroke Parser
nelstrom
1
1.2k
When & why you should stay out of visual mode
nelstrom
1
3.7k
This is the problem
nelstrom
1
270
Progressive enhancement - a barrier to progress?
nelstrom
1
630
Other Decks in Technology
See All in Technology
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
1.7k
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
280
20251027_findyさん_音声エージェントLT
almondo_event
2
530
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
230
Amazon Q Developer CLIをClaude Codeから使うためのベストプラクティスを考えてみた
dar_kuma_san
0
320
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
240
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
160
データエンジニアとして生存するために 〜界隈を盛り上げる「お祭り」が必要な理由〜 / data_summit_findy_Session_1
sansan_randd
1
850
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
950
累計5000万DLサービスの裏側 – LINEマンガのKotlinで挑む大規模 Server-side ETLの最適化
ldf_tech
0
150
Data Engineering Guide 2025 #data_summit_findy by @Kazaneya_PR / 20251106
kazaneya
PRO
6
690
実践マルチモーダル検索!
shibuiwilliam
3
530
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Six Lessons from altMBA
skipperchong
29
4k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Context Engineering - Making Every Token Count
addyosmani
8
330
Building an army of robots
kneath
306
46k
Optimizing for Happiness
mojombo
379
70k
A Modern Web Designer's Workflow
chriscoyier
697
190k
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