Real Vim ninjas count every keystroke - do you?

Pick a challenge, fire up Vim, and show us what you got.

Changelog, Rules & FAQ, updates: @vimgolf, RSS.

Your VimGolf key: please sign in

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put 5100ce70326e09000200004a

Saving the hashes(#)

The following file is copied from vimcasts.org(Its only for learning purpose,hope the site owner doesn't mind it), its probably the easiest of challenges.Our goal is to delete every line which doesn't contain a hash signs. The remaining hash signs with numbers are then sorted to get the final output.

Start file
January 2013
#40 Long-range line duplication (6:31)
December 2012
#39 Profiling Vimscript performance (8:09)
November 2012
#38 Writing a custom fold expression (12:07) #37 How to fold (8:49)
August 2012
#36 VimGolf - Prime Numbers (6:53)
May 2011
#35 Fugitive.vim - exploring the history of a git repository (10:04) #34 Fugitive.vim - browsing the git object database (9:45) #33 Fugitive.vim - resolving merge conflicts with vimdiff (11:35)
April 2011
#32 Fugitive.vim - working with the git index (11:41) #31 Fugitive.vim - a complement to command line git (8:27)
February 2011
#30 Undo branching and Gundo.vim (6:30)
January 2011
#29 Aligning text with Tabular.vim (5:11)
November 2010
#28 Refining search patterns with the command-line window (7:51)
October 2010
#27 Synchronizing plugins with git submodules and pathogen (9:24) #26 Bubbling text (6:23)
September 2010
#25 Creating colorschemes for Vim (9:44)
July 2010
#24 Updating your vimrc file on the fly (2:51) #23 Converting HAML to ERB with Vim macros (7:36)
June 2010
#22 Selecting columns with visual block mode (4:21) #21 Converting markdown to structured HTML with a macro (9:25)
May 2010
#20 Running Vim within IRB (4:35) #19 Spell checking (5:42) #18 Formatting text with par (5:12)
April 2010
#17 Hard wrapping text (5:23) #16 Soft wrapping text (4:54) #15 The file explorer (5:36) #14 The :edit command (3:50) #13 Cleaning up with Vim (0:36)
March 2010
#12 Modal editing: undo, redo and repeat (5:26) #11 Using the changelist and jumplist (3:21) #10 Creating the Vimcasts logo as ASCII art (5:47) #9 How to use tabs (5:28)
February 2010
#8 Working with tabs (3:17) #7 Working with windows (5:32) #6 Working with buffers (3:28) #5 Indentation commands (5:41)
January 2010
#4 Tidying whitespace (4:33) #3 Whitespace preferences and filetypes (3:29) #2 Tabs and Spaces (6:22) #1 Show invisibles (2:52)
End file
#1 Show invisibles (2:52) 
#2 Tabs and Spaces (6:22)
#3 Whitespace preferences and filetypes (3:29)
#4 Tidying whitespace (4:33)
#5 Indentation commands (5:41)
#6 Working with buffers (3:28)
#7 Working with windows (5:32)
#8 Working with tabs (3:17)
#9 How to use tabs (5:28)
#10 Creating the Vimcasts logo as ASCII art (5:47)
#11 Using the changelist and jumplist (3:21)
#12 Modal editing: undo, redo and repeat (5:26)
#13 Cleaning up with Vim (0:36)
#14 The :edit command (3:50)
#15 The file explorer (5:36)
#16 Soft wrapping text (4:54)
#17 Hard wrapping text (5:23)
#18 Formatting text with par (5:12)
#19 Spell checking (5:42)
#20 Running Vim within IRB (4:35)
#21 Converting markdown to structured HTML with a macro (9:25)
#22 Selecting columns with visual block mode (4:21)
#23 Converting HAML to ERB with Vim macros (7:36)
#24 Updating your vimrc file on the fly (2:51)
#25 Creating colorschemes for Vim (9:44)
#26 Bubbling text (6:23)
#27 Synchronizing plugins with git submodules and pathogen (9:24)
#28 Refining search patterns with the command-line window (7:51)
#29 Aligning text with Tabular.vim (5:11)
#30 Undo branching and Gundo.vim (6:30)
#31 Fugitive.vim - a complement to command line git (8:27)
#32 Fugitive.vim - working with the git index (11:41)
#33 Fugitive.vim - resolving merge conflicts with vimdiff (11:35)
#34 Fugitive.vim - browsing the git object database (9:45)
#35 Fugitive.vim - exploring the history of a git repository (10:04)
#36 VimGolf - Prime Numbers (6:53)
#37 How to fold (8:49)
#38 Writing a custom fold expression (12:07)
#39 Profiling Vimscript performance (8:09)
#40 Long-range line duplication (6:31)

View Diff

1,22c1,24
<
< January 2013
< #40 Long-range line duplication (6:31)
< December 2012
< #39 Profiling Vimscript performance (8:09)
< November 2012
< #38 Writing a custom fold expression (12:07) #37 How to fold (8:49)
< August 2012
< #36 VimGolf - Prime Numbers (6:53)
< May 2011
< #35 Fugitive.vim - exploring the history of a git repository (10:04) #34 Fugitive.vim - browsing the git object database (9:45) #33 Fugitive.vim - resolving merge conflicts with vimdiff (11:35)
< April 2011
< #32 Fugitive.vim - working with the git index (11:41) #31 Fugitive.vim - a complement to command line git (8:27)
< February 2011
< #30 Undo branching and Gundo.vim (6:30)
< January 2011
< #29 Aligning text with Tabular.vim (5:11)
< November 2010
< #28 Refining search patterns with the command-line window (7:51)
< October 2010
< #27 Synchronizing plugins with git submodules and pathogen (9:24) #26 Bubbling text (6:23)
< September 2010
---
> #1 Show invisibles (2:52)
> #2 Tabs and Spaces (6:22)
> #3 Whitespace preferences and filetypes (3:29)
> #4 Tidying whitespace (4:33)
> #5 Indentation commands (5:41)
> #6 Working with buffers (3:28)
> #7 Working with windows (5:32)
> #8 Working with tabs (3:17)
> #9 How to use tabs (5:28)
> #10 Creating the Vimcasts logo as ASCII art (5:47)
> #11 Using the changelist and jumplist (3:21)
> #12 Modal editing: undo, redo and repeat (5:26)
> #13 Cleaning up with Vim (0:36)
> #14 The :edit command (3:50)
> #15 The file explorer (5:36)
> #16 Soft wrapping text (4:54)
> #17 Hard wrapping text (5:23)
> #18 Formatting text with par (5:12)
> #19 Spell checking (5:42)
> #20 Running Vim within IRB (4:35)
> #21 Converting markdown to structured HTML with a macro (9:25)
> #22 Selecting columns with visual block mode (4:21)
> #23 Converting HAML to ERB with Vim macros (7:36)
> #24 Updating your vimrc file on the fly (2:51)
24,38c26,40
< July 2010
< #24 Updating your vimrc file on the fly (2:51) #23 Converting HAML to ERB with Vim macros (7:36)
< June 2010
< #22 Selecting columns with visual block mode (4:21) #21 Converting markdown to structured HTML with a macro (9:25)
< May 2010
< #20 Running Vim within IRB (4:35) #19 Spell checking (5:42) #18 Formatting text with par (5:12)
< April 2010
< #17 Hard wrapping text (5:23) #16 Soft wrapping text (4:54) #15 The file explorer (5:36) #14 The :edit command (3:50) #13 Cleaning up with Vim (0:36)
< March 2010
< #12 Modal editing: undo, redo and repeat (5:26) #11 Using the changelist and jumplist (3:21) #10 Creating the Vimcasts logo as ASCII art (5:47) #9 How to use tabs (5:28)
< February 2010
< #8 Working with tabs (3:17) #7 Working with windows (5:32) #6 Working with buffers (3:28) #5 Indentation commands (5:41)
< January 2010
< #4 Tidying whitespace (4:33) #3 Whitespace preferences and filetypes (3:29) #2 Tabs and Spaces (6:22) #1 Show invisibles (2:52)
<
---
> #26 Bubbling text (6:23)
> #27 Synchronizing plugins with git submodules and pathogen (9:24)
> #28 Refining search patterns with the command-line window (7:51)
> #29 Aligning text with Tabular.vim (5:11)
> #30 Undo branching and Gundo.vim (6:30)
> #31 Fugitive.vim - a complement to command line git (8:27)
> #32 Fugitive.vim - working with the git index (11:41)
> #33 Fugitive.vim - resolving merge conflicts with vimdiff (11:35)
> #34 Fugitive.vim - browsing the git object database (9:45)
> #35 Fugitive.vim - exploring the history of a git repository (10:04)
> #36 VimGolf - Prime Numbers (6:53)
> #37 How to fold (8:49)
> #38 Writing a custom fold expression (12:07)
> #39 Profiling Vimscript performance (8:09)
> #40 Long-range line duplication (6:31)

Solutions

The best way to learn is to practice. Below, you will find some of the solutions other golfers have entered. To unlock higher ranked solutions, submit your own entry which does as well or better than the solutions you can currently see - climb the ladder!

Check out these helpful resources to improve your Vim skills... Game on.

Unlock 479 remaining solutions by signing in and submitting your own entry
#480 harry 🏳️‍🌈 / @hdgarrood - Score: 106 - 02/10/13 @ 20:29
:v/#/d<CR>:%s/ #/\r#g<BS>/g<CR>:%sort<CR>/#2<CR>Dggpuo<Esc>p13jkkdd/wh<CR>Duddggjp/whi<CR>ddunnggddunnddgjjggjjp36jVkkkkdggjjjp:wq<CR>

0 comments


Created by: @pradeep6kumar

480 active golfers, 2063 entries

Leaderboard (lowest score wins):
21
#121 - Zach Ingbretsen / @ZIngbretsen

09/08/2019 at 03:08PM

21
#122 - Lory / @Lory46845742

11/14/2019 at 10:49AM

21
#123 - iBhagwan / @iiBhagwan

05/19/2020 at 06:34PM

21
#124 - Ming Dai / @MingDai2

07/01/2020 at 10:46PM

21
#125 - Arya Kumar / @SusSquirrel

05/27/2021 at 11:39PM

21
#126 - Michel Viktor / @tomkpz

08/11/2021 at 01:43AM

21
#127 - Alex / @AlexanderHeatl2

07/09/2022 at 04:34PM

21
#128 - 🥚 / @schmarles_

11/03/2024 at 08:25AM

22
#129 - vimgolf copycat / @vimgolf_copycat

03/08/2014 at 01:29PM

22
#130 - Jon Krause / @jkrause314

01/05/2016 at 07:26AM

22
#131 - Jeff / @sir_wiggles3

09/11/2018 at 07:16PM

22
#132 - Дима / @dimkino

05/30/2019 at 08:50PM

22
#133 - James Casey / @hanavi

12/22/2019 at 07:04PM

23
#134 - Jean George / @JeanGeo20504212

10/08/2021 at 11:21AM

25
#135 - Tim Chase / @gumnos

01/24/2013 at 11:45AM

25
#136 - Kerson Hsiao / @KersonHsiao

01/24/2013 at 04:12PM

25
#137 - Luan Santos / @cfcluan

01/25/2013 at 03:53PM

25
#138 - Petro Тrouq / @zulolosi

01/27/2013 at 11:18PM

25
#139 - retired account / @retired10072015

01/27/2013 at 11:48PM

25
#140 - Panupan S. / @lionpeal

01/31/2013 at 10:44PM

25
#141 - mnx / @mnxx

02/04/2013 at 11:04PM

25
#142 - Joel Elkins / @dice_tea

03/02/2013 at 06:37PM

25
#143 - Martin Sander / @0x89

03/09/2013 at 02:47PM

25
#144 - _ / @ortnap

04/04/2013 at 10:26PM

25
#145 - Chasetopher / @chasetopherlee

04/27/2013 at 09:40AM

25
#146 - sweet.mike.vg / @SweetMikeVg

05/02/2013 at 01:33AM

25
#147 - M8R eonxi21 / @eonxi21

05/22/2013 at 11:39AM

25
#148 - Woojung Kim 김우중 / @_kimwz

07/12/2013 at 04:15AM

25
#149 - Aaron Bieber / @aaronbieber

07/14/2013 at 10:15PM

25
#150 - cook / @mattcook08

07/15/2013 at 07:36PM