如何遵循vim高尔夫解决方案

时间:2014-12-14 20:20:24

标签: vim

为了提高我的vim技能,我看了一下这个vim高尔夫挑战赛

http://vimgolf.com/challenges/50048db8cdc4060002000004#

条目#346是这个

:%s/.*/"\0",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ

我进入了命令模式并输入了

%s/.*/"\0",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ

然后按Enter键

我不认为我做得对,因为我的结束文件没有任何类似于所需的输出

我的开始文件看起来像这样

There
is
no
vertical
limit
for
vim
Ninjas

预期的结束文件

[ "There", "is", "no", "vertical", "limit", "for", "vim", "Ninjas" ]

我的结束档案

  1 "There",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  2 "is",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  3 "no",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  4 "vertical",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  5 "limit",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  6 "for",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  7 "vim",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  8 "Ninjas",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
  9 "",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ  

3 个答案:

答案 0 :(得分:3)

您必须按 Enter 键,而不是按字面意思输入<CR>等特殊字符(作为4个不同的键)。这种表示法在Vim用语中很常见,因为它也用于映射。有关详细信息和完整列表,请参阅:help key-notation

此外,当您看到类似^[的内容时,这是一个控制序列,在本例中为 Ctrl + [,其中相当于 Esc 。您可以通过 Ctrl + V 输入,然后按 Ctrl + [(或其他任何内容)。< / p>

答案 1 :(得分:3)

%s/.*/"\0",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ

您必须在<CR><Esc>处按Enter键和Esc键。

让我们打破它:

  1. %s/.*/"\0",会匹配将每个单词放在" "内的所有内容,并在每行后插入,
  2. f,C ]首先查找(f),(现在光标在,上)并删除它,之后进入插入模式并放入]C ]的快捷方式是r],它将使用]替换当前的字符,之后您不必按<Esc>
  3. ggI[转到文件开头并进入插入模式并放入[
  4. 8J - 对于接下来的8行,使其成为一行。
  5. ZZ:wq
  6. 具有同等效力

答案 2 :(得分:1)

你必须按键,所以

:%s/.*/"\0",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ

变为

:%s/.*/"\0",Enterf,C ]EscggI[ Esc8JZZ

同样,当您阅读<CR>表示“立即按回车键”时,<Esc>也是如此。