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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nelstrom
November 07, 2012
Technology
29
5.9k
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.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.7k
This is the problem
nelstrom
1
280
Progressive enhancement - a barrier to progress?
nelstrom
1
640
Other Decks in Technology
See All in Technology
「データとの対話」の現在地と未来
kobakou
0
1.3k
管理者向けGitHub Enterpriseの運用Tips紹介: 人にもAIにも優しいプラットフォームづくり
yuriemori
0
110
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.6k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
1
170
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
ヘルシーSRE
tk3fftk
2
240
チームメンバー迷わないIaC設計
hayama17
5
3.8k
バクラクのSREにおけるAgentic AIへの挑戦/Our Journey with Agentic AI
taddy_919
2
1k
大規模な組織におけるAI Agent活用の促進と課題
lycorptech_jp
PRO
6
7.8k
開発組織の課題解決を加速するための権限委譲 -する側、される側としての向き合い方-
daitasu
4
250
Featured
See All Featured
Done Done
chrislema
186
16k
How to train your dragon (web standard)
notwaldorf
97
6.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
Ethics towards AI in product and experience design
skipperchong
2
210
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
310
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4k
A designer walks into a library…
pauljervisheath
210
24k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
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