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.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
10
2k
Modelling State Machines with Ragel
nelstrom
11
24k
Vimprint - A Vim Keystroke Parser
nelstrom
1
1.1k
When & why you should stay out of visual mode
nelstrom
1
3.4k
This is the problem
nelstrom
1
250
Progressive enhancement - a barrier to progress?
nelstrom
1
610
Other Decks in Technology
See All in Technology
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
400
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
310
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
120
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
1
160
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
2
190
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
730
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
5
520
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
200
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
1.1k
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
Featured
See All Featured
Web Components: a chance to create the future
zenorocha
305
41k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Making Projects Easy
brettharned
108
5.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
25
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
What's in a price? How to price your products and services
michaelherold
237
11k
A Tale of Four Properties
chriscoyier
151
22k
Music & Morning Musume
bryan
41
5.6k
Why Our Code Smells
bkeepers
PRO
331
56k
The Pragmatic Product Professional
lauravandoore
25
5.8k
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