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 9v00686695ea000000000723

From brakets to parens

This is one of the most common problem when you wrap an array for error handling. Vim is useful when you convert foo[i][j][k] into foo(i, j, k) for many times.

Start file
int main() {
	glm::vec3 umax(
		(vx[i+1][j][k]-vx[i][j][k])/2,
		(vy[i][j+1][k]-vy[i-1][j+1][k])/2,
		(vz[i][j][k+1]-vz[i-1][j][k+1])/2
	);
	glm::vec3 umin(
		(m_vx[i][j][k]-m_vx[i-1][j][k])/2,
		(m_vy[i][j][k]-m_vy[i-1][j][k])/2,
		(m_vz[i][j][k]-m_vz[i-1][j][k])/2
	);
}
End file
int main() {
	glm::vec3 umax(
		(vx(i+1, j, k)-vx(i, j, k))/2,
		(vy(i, j+1, k)-vy(i-1, j+1, k))/2,
		(vz(i, j, k+1)-vz(i-1, j, k+1))/2
	);
	glm::vec3 umin(
		(m_vx(i, j, k)-m_vx(i-1, j, k))/2,
		(m_vy(i, j, k)-m_vy(i-1, j, k))/2,
		(m_vz(i, j, k)-m_vz(i-1, j, k))/2
	);
}

View Diff

1d0
< 
4,6c3,5
< 		(vx[i+1][j][k]-vx[i][j][k])/2,
< 		(vy[i][j+1][k]-vy[i-1][j+1][k])/2,
< 		(vz[i][j][k+1]-vz[i-1][j][k+1])/2
---
> 		(vx(i+1, j, k)-vx(i, j, k))/2,
> 		(vy(i, j+1, k)-vy(i-1, j+1, k))/2,
> 		(vz(i, j, k+1)-vz(i-1, j, k+1))/2
9,11c8,10
< 		(m_vx[i][j][k]-m_vx[i-1][j][k])/2,
< 		(m_vy[i][j][k]-m_vy[i-1][j][k])/2,
< 		(m_vz[i][j][k]-m_vz[i-1][j][k])/2
---
> 		(m_vx(i, j, k)-m_vx(i-1, j, k))/2,
> 		(m_vy(i, j, k)-m_vy(i-1, j, k))/2,
> 		(m_vz(i, j, k)-m_vz(i-1, j, k))/2
13c12
< }
\ No newline at end of file
---
> }

Solutions by @HRyuT:

Unlock 16 remaining solutions by signing in and submitting your own entry
Created by: @mirroris

241 active golfers, 1103 entries

Solutions by @HRyuT:
25
#48 - HRyuT / @HRyuT

02/14/2026 at 05:57AM

26
#>76 - HRyuT / @HRyuT

02/14/2026 at 05:57AM

27
#>82 - HRyuT / @HRyuT

02/14/2026 at 05:56AM

29
#>88 - HRyuT / @HRyuT

02/14/2026 at 05:55AM

31
#>92 - HRyuT / @HRyuT

02/14/2026 at 05:51AM

33
#>95 - HRyuT / @HRyuT

02/14/2026 at 05:50AM

34
#>103 - HRyuT / @HRyuT

02/14/2026 at 05:47AM

35
#>119 - HRyuT / @HRyuT

02/14/2026 at 05:46AM

36
#>121 - HRyuT / @HRyuT

02/14/2026 at 05:45AM

37
#>128 - HRyuT / @HRyuT

02/14/2026 at 05:44AM

38
#>136 - HRyuT / @HRyuT

02/14/2026 at 05:43AM

39
#>145 - HRyuT / @HRyuT

02/14/2026 at 05:40AM

41
#>160 - HRyuT / @HRyuT

02/14/2026 at 05:38AM

42
#>175 - HRyuT / @HRyuT

02/13/2026 at 06:54PM

44
#>186 - HRyuT / @HRyuT

02/13/2026 at 06:51PM

463
#>240 - HRyuT / @HRyuT

02/13/2026 at 06:39PM