Whitespace, empty lines and tabs
Convert tabs to spaces, strip empty lines and trailing whitespace.
Start file
convert tabs to spaces strip all blank lines and remove any trailing spaces
End file
convert tabs to spaces
strip all blank lines
and remove any trailing spaces
View Diff
1,5c1,3 < convert tabs to spaces < < strip all blank lines < < and remove any trailing spaces --- > convert tabs to spaces > strip all blank lines > and remove any trailing spaces
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.
#313 João Veiga / @jcsvveiga - Score: 33 - 02/13/12 @ 13:44
:%s,\t, ,g<CR>:%s,\s*$,,g<CR>kddkkddZZ
0 comments
#314 Drew Benedetti / @cnorsl - Score: 33 - 02/16/12 @ 14:36
:%s/<Tab>/ /g<CR>:%s/ *$/g<BS>/<CR>:g/^$/d<CR>ZZ
0 comments
#315 Darren Firth / @DarrenSFirth - Score: 33 - 02/19/12 @ 18:53
:se et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#316 Vicente Sánchez / @froysm - Score: 33 - 09/08/12 @ 22:28
:%s/\s\+$//<CR>:%s/<C-V><Tab>/ /g<CR>kddkkddZZ
0 comments
#317 Drew Chandler / @drklutch - Score: 33 - 10/08/12 @ 16:19
:%s/\t/ /g<CR>:%s/ *$//<CR>kddkkdd:wq<CR>
0 comments
#318 Underhill Labs / @underhilllabs - Score: 33 - 10/29/12 @ 14:26
:%s/\t/ /g<CR>:g/^$/d<CR>:%s/\s\+$/<CR>ZZ
0 comments
#319 Pradeep Kumar / @pradeep6kumar - Score: 33 - 12/12/12 @ 05:21
:%s/\t/ /g|g/^$/d|%s/\s\+$/<CR>:wq<CR>
0 comments
#320 scturtle / @scturtle - Score: 33 - 04/12/13 @ 00:55
<CR>:%s/<Tab>/ /g<CR>:%s/\s*$//g<CR>kddkkddZZ
0 comments
#321 Nicolás Sanguinetti / @godfoca - Score: 34 - 12/28/10 @ 12:59
<fd-35>:<Up><Up><CR>:<Up><Up><Up><CR>:2d<CR>:3d<CR>:wq<CR>
0 comments
#322 Soliman Sylvain / @sylvain_soliman - Score: 34 - 12/28/10 @ 14:07
:%s/<C-V><Tab>/ /g<CR>:%s/ *$//<CR><Up>dd2k.:wq<CR>
0 comments
#323 Andrei Dragomir / @adragomir - Score: 34 - 01/01/11 @ 13:45
Q%s/\t/ /g<CR>%s/ *$//<CR>%g/^$/d<CR>vi<CR>ZZ
0 comments
#324 Cartney McLennon / @mepsi_pax - Score: 34 - 01/05/11 @ 14:01
:%s/\s\+$//<CR>:%s/<C-V><Tab>/ /g<CR>kddkkdd<Esc>ZZ
0 comments
#325 Misha (Mike) Granin / @Granin - Score: 34 - 01/19/11 @ 08:19
qq0R <Esc>i <Esc>jdd$belDq2@qkR <Esc>i <Esc>:wq<CR>
0 comments
#326 Matthieu Honel / @ocus - Score: 34 - 01/26/11 @ 00:09
:g/^$/d<CR>:%s/\t/ /g<CR>:%s/\s\+$//<CR>ZZ
0 comments
#327 Beau Dacious / @nocash - Score: 34 - 03/16/11 @ 09:21
:g/^$/d<CR>:%s/\t/ /g<CR>:%s/\s\+$//<CR>ZZ
0 comments
#328 Frederik Mogensen / @fmogensen - Score: 34 - 03/31/11 @ 02:39
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#329 asdaskdjn / @asdaskdjn - Score: 34 - 06/09/11 @ 00:58
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#330 khebbie / @khebbie - Score: 34 - 06/16/11 @ 12:04
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#331 Dave Bradford / @dbradf - Score: 34 - 06/17/11 @ 16:11
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#332 James Gary / @james_gary - Score: 34 - 06/22/11 @ 12:36
:%s/<Tab>/ /g<CR>:%g/^$/d<CR>:%s/\s*$//g<CR>ZZ
0 comments
#333 Øystein Walle / @oysteinwalle - Score: 34 - 07/04/11 @ 01:09
:2,4j!|se et ts=2|ret|%s/ *$//|wq<CR>
0 comments
#334 Gary Rennie / @TheGazler - Score: 34 - 08/04/11 @ 12:47
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#335 Stanley Wang / @stanleynwang - Score: 34 - 08/25/11 @ 04:54
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#336 cameron / @cameronaustgen - Score: 34 - 09/08/11 @ 22:13
:%s/<Tab>/ /g<CR>:%g/^$/d<CR>:%s/\s*$//g<CR>ZZ
0 comments
#337 yoshi / @yoshiiiine - Score: 34 - 10/21/11 @ 18:25
:s/\t/ /g5<CR>3kdd:s/ *$//g3<CR>kdd:wq<CR>
0 comments
#338 Yu-Hsuan Li / @Walker_tw - Score: 34 - 12/20/11 @ 22:47
:%s/\t/ /g<CR>:%s/ *$//g<CR><Up>dd<Up><Up>dd:wq<CR>
0 comments
#339 Kieran / @kgleeson - Score: 34 - 02/08/12 @ 14:03
:g/^$/d<CR>:%s/\t/ /g<CR>:%s/\s\+$//<CR>ZZ
0 comments
#340 snuffling / @snuffling - Score: 34 - 02/12/12 @ 13:17
:set et ts=2<CR>:ret<CR>JjJ:%s/\s*$//<CR>ZZ
0 comments
#341 demon.mhm / @demonmhm - Score: 34 - 02/18/12 @ 13:33
:%s/<C-V><Tab>/ /g<CR>:g/^$/d<CR>:%s/\s*$//g<CR>ZZ
0 comments
#342 jDeveloper / @jDevEE - Score: 34 - 04/21/12 @ 16:51
:g/^$/d<CR>:%s/\t/ /g<CR>:%s/\s*$//g<CR>ZZ
0 comments
#343 lionel young / @lionelyoung - Score: 35 - 12/28/10 @ 13:15
<fd-35>:%s/\t//<BS> /g<CR>kddkkdd$xj$xxxZZ
0 comments
#344 foo bar / @whoever_foo - Score: 35 - 12/29/10 @ 00:06
:set et ts=2<CR>:ret<CR>JjJ:%s/\s\+$//<CR>ZZ
0 comments
#345 Thomas Schönwälder / @Masei1988 - Score: 35 - 01/15/11 @ 11:58
JjJ:%s/^\s*\|\s*$//g<CR><C-V>2kI <Esc>ja <Esc>ZZ
0 comments
#346 nicolas bo / @thevegeta - Score: 35 - 11/08/11 @ 06:58
:set et ts=2|ret<CR>JjJ:%s/\s\+$//g<CR>ZZ
0 comments
#347 Dj Vimgolf / @dj_vimgolf - Score: 35 - 12/31/11 @ 11:23
:g/^\s*$/d<CR>:%s/\t/ /g<CR>:%s/\s*$/<CR>ZZ
0 comments
#348 Kohei Ito / @kohe - Score: 35 - 12/05/12 @ 22:33
:%s/\(^$\n\| *$\)//g<CR>:%s/\t/ /g<CR>ZZ
0 comments
#349 Jonathan Wallace / @jonathanwallace - Score: 36 - 12/28/10 @ 18:34
<fd-35>:%s/<Tab>/ /g<CR>:%s/\(^\n\| *$\)//g<CR>ZZ
0 comments
#350 kuhout / @kuhout - Score: 36 - 12/29/10 @ 06:26
<fd-35>:%s/\t/ /g<CR>:%s/ \+$//g<CR>kddkkddZZ
0 comments
#351 Kornél Lugosi / @Coornail - Score: 36 - 12/29/10 @ 08:56
:g/^$/d<CR>:%s/\t/\ \ /g<CR>:%s/\s\+$//<CR>ZZ
0 comments
#352 Basir Rajendra / @basirraj - Score: 36 - 01/24/11 @ 17:57
:g/^$/d<CR>:%s/\t/ /g<CR>:%s/\s*$//<CR>:w<BS>x<CR>
0 comments
#353 jasper110 / @jasper110 - Score: 36 - 09/21/11 @ 09:30
:set ex<Tab><CR>:ret<Tab><CR>6Xjdd12Xjdd6X$xxxkxZZ
0 comments
#354 Олег Коваленко / @oleg_kovalenko - Score: 36 - 04/01/12 @ 02:38
:set et ts=2|ret|g/^$/d|%s/\v\s+$<CR>ZZ
0 comments
#355 Brant / @brantb - Score: 36 - 06/17/12 @ 21:27
:set et ts=2<CR>:ret<CR>:<Esc>JjJ:%s/\s*$//<CR>ZZ
0 comments
#356 CY / @wongcy0 - Score: 36 - 01/27/13 @ 02:07
:v/./d<CR>:%s/<Tab>/ /g<CR>:g/ $/no<S-Tab> $belD<CR>ZZ
0 comments
#357 Joe Cyboski / @cybo42 - Score: 37 - 12/28/10 @ 16:42
:%s/\t/ /g<CR>:%s/\s*$//g<CR>:g/^$/ d<CR>:wq<CR>
0 comments
#358 Joe McCall / @joem86 - Score: 37 - 12/28/10 @ 23:33
<fd-35>:%s,\t, ,g<CR>:%g,^$,d<CR>:%s, \+$,,<CR>ZZ
0 comments
#359 Brad / @bjjwillis - Score: 37 - 12/29/10 @ 23:41
:%s/\t/ /g<CR>:%s/ \+$//<CR>:g/^4<BS>$/d<CR>ZZ
0 comments
#360 cloudsplitter / @cloudsplitter - Score: 38 - 12/28/10 @ 13:00
<fd-35>:<Up><Up><CR>A<BS><BS><BS><Esc>kddkA<BS><Esc>kdd:wq<CR>
0 comments
#361 Steve Klabnik / @steveklabnik - Score: 38 - 12/28/10 @ 19:24
<fd-35>:retab!<BS><CR>jddj.A<BS><BS><BS><Esc>kdl<Esc>:wq<CR>
0 comments
#362 Analog / @analogp1xel - Score: 38 - 03/18/12 @ 13:45
:set et ts=2<CR>:ret<CR>:2d<CR>:3d<CR>:%s/ *$//<CR>ZZ
0 comments
#363 timgaleckas / @timgaleckas - Score: 40 - 12/28/10 @ 13:05
<fd-35>:retab<CR><Down>dd<Down>dd:%s.<BS>/\s*$//g<CR>:wq<CR>
0 comments
#364 dcbaok / @dcbaok - Score: 40 - 12/30/10 @ 05:24
:%s/\t/ /g<CR>:v/./d<CR>:%s/ \+//<BS><BS>$//<CR>ZZ
0 comments
#365 Stephen Gordon / @DubsGordon - Score: 40 - 08/01/11 @ 20:19
:set et ts=2|ret<CR>:g/^$/d<CR>:%s/\s\+$//e<CR>ZZ
0 comments
#366 Steven Sloss / @StevenSloss - Score: 40 - 02/16/12 @ 07:52
:g/^4<BS>$/d<CR>:%s/ *$//g<CR>:%!expant<BS>d -t 2<CR>ZZ
0 comments
#367 Lee Marlow / @lmarlow - Score: 41 - 12/28/10 @ 13:06
<fd-35><fd-60>0<C-V>jjjjc <Esc>jddjddkcw <Esc>$xjwwhhD<Esc>:wq<CR>
0 comments
#368 David Wolever / @wolever - Score: 41 - 12/28/10 @ 14:45
<fd-35>:set ts=4<BS>2<CR>:ret<Tab>a<Tab><CR>jdd$Djdd5elD:wq<CR>
0 comments
#369 Leonard Chin / @lchin - Score: 41 - 12/29/10 @ 02:01
<fd-35>Q%s/\t/ /g<CR>%s/ *$//<CR>%<BS>g/^\n/d<CR>vi<CR>ZZ
0 comments
#370 José Cortés / @antigravedadtw - Score: 41 - 11/07/11 @ 12:02
<Esc>:%s/\t/ /g<CR>:%s/^\n//g<CR><Esc>:%s/\s*$//g<CR>:wq<CR>
0 comments
#371 ekevinuk / @ekevinuk - Score: 41 - 07/05/12 @ 14:56
:%s!\t\| $\| \{2,}\|^\n!!g<CR>I <Esc>k..k.<Esc>:wq<CR>
0 comments
#372 sathish316 / @sathish316 - Score: 41 - 11/18/12 @ 09:16
:%s/\t//g<Left><Left> <CR>:%s/\n$//g<CR>:%s/\s*$//g<CR>:wq<CR>
0 comments
#373 Rckrd / @Rckrd - Score: 41 - 04/09/13 @ 11:48
:%s/|<BS>+<BS>\t/ =<BS>/g<CR>kddkkddk&$ljxlj$dhhd$ZZ
0 comments
#374 Jes / @vim_jes - Score: 42 - 01/15/11 @ 07:54
jddjdd:set ts=2|set et|retab|%s/\s\+$//<CR>ZZ
0 comments
#375 Fred / @fredlee - Score: 42 - 05/27/11 @ 07:06
:set et ts=2<CR>:ret<CR>:v/\S/d<CR>:%s/\s\+$//<CR>:wq<CR>
0 comments
#376 marklu / @marklu - Score: 43 - 12/29/10 @ 02:04
<fd-35>:%s/\s\+$//<CR>:%s/\t/ /g<CR>:%s/\n\n/\r<CR>:wq<CR>
0 comments
#377 Mike Adolphs / @mike_adolphs - Score: 44 - 12/28/10 @ 15:00
<fd-35>:%s/\t/ /g<CR>:%s=\s\ $==<CR><Up>dd<Up><Up>dd:wq<CR>
0 comments
#378 Mike Waldner / @mawaldne - Score: 44 - 12/31/10 @ 12:02
:%s/\s\+$//<CR>gghxi <Esc>jddhxhxi <Esc>jddhxi <Esc>ZZ
0 comments
#379 Корнев Руслан / @woto7 - Score: 45 - 01/03/11 @ 12:23
:%s/\t/ /g<CR>:%s/\r<BS>n\n/\r/g<CR>:%s/\s\+$//g<CR><Esc>:x<CR>
0 comments
#380 Ben Lenarts / @benlenarts - Score: 46 - 12/28/10 @ 14:13
<fd-35>jddjdd:%s/\s\ $//g<CR>:%s\<BS>/\n<BS>t/ /g<CR>:wq<CR>
0 comments
#381 Michael Lustfield / @Profarius - Score: 46 - 12/28/10 @ 23:02
<fd-35><Down>dd<Down>.:%s/\t//<BS> /g<CR><End><Left><Left>d$<Up>.:x<CR>
0 comments
#382 Jan Andersson / @jan_andersson - Score: 47 - 12/28/10 @ 14:02
<fd-35>:<Up><BS><BS>%s/<C-V><Tab>/ /g<CR>:g/^$/d<CR>:%s/\s*$//<CR>:wq<CR>
0 comments
#383 drio / @drio - Score: 47 - 12/29/10 @ 04:22
<Esc>:%s/\s\+$//<CR><Esc>kddkkdd<Esc>:%s/\t\+/ /<CR><Esc>k h<Esc>i <Esc>:x<CR>
0 comments
#384 Algor / @algor_1 - Score: 47 - 10/06/12 @ 05:41
:%s/\t/ /g<CR>:%s/ *$//g<CR>2Gdd3Gddi <Esc>ki <Esc>k0i <Esc>:wq<CR>
0 comments
#385 Ivan Ćurković / @ivan_curkovic - Score: 56 - 11/25/11 @ 10:04
:ser<BS>t et ts=2<NL>:ret<NL>JjJ;L:%s-<BS>/.<BS>'\<BS><BS>\S<BS>s$<BS>%<BS>^<BS>7<BS>*$//<NL>ZZ
0 comments
#386 Sheng Wu / @shenghis - Score: 63 - 08/24/12 @ 18:16
:set tabstop=2<CR>:set expandtab<CR>:retab<CR>:g/$<BS>^$/d<CR>:%s/\s\+$g<BS><CR>:<BS>ZZ
0 comments
#387 Timothy Holland / @th0114nd - Score: 70 - 08/10/12 @ 11:04
0000<BS>d0d9d0ud0xi <Esc>jddd0i <Esc>jddd0i <Esc>0)<BS><BS><BS>lllllxxxuuu3x3xx3<Esc><Esc>lkxl:x<CR>
0 comments
#388 Brooks Garrett / @brooksgarrett - Score: 73 - 12/29/10 @ 07:25
<fd-35>:%s/\t/ /g<CR>i <Up><Up> <Up><Up><Left><Left><Left> <Esc><Down>dd<Down>dd<Up><Up><Down>G$xxx<Up>x:wq<CR>
0 comments
#389 Stephen Paul Weber / @singpolyma - Score: 94 - 12/28/10 @ 15:48
<fd-35>:%s/\t/ /g<CR>:s/ *$//<Left><Left><Left><Right><Left><Left><Left><Right><Right><Right><Right><Right><Right>g<CR><Up>dd<Up><Up>dd<Esc>:w<BS><BS><End>x:wq<CR>
0 comments
#390 Bèr Kessels / @berkes - Score: 99 - 01/05/11 @ 09:21
<Left><Left><Right><Left><Right><Esc>x<Esc>u<Esc><Left><Left><Down>ddj.d<Up><Esc>u<Left>x<Left><Up><Left>i <Left>x<BS><Esc>xx<Down>x<Down>xi <Up><Left><Left> <Up><Left><Left><Left><Left> <BS><Down><Up><End>x<Down><Up><Down><Up><BS><Left>ix<BS><BS><Right>x<BS><Esc><Right><Down><Right><Right>x<Right><Up><Right><Down><Right><Down><End><Left><Left><Left><Right>xxx<Esc>:wq<CR>
0 comments
VimGolf