为了提高我的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
答案 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键。
让我们打破它:
%s/.*/"\0",
会匹配将每个单词放在" "
内的所有内容,并在每行后插入,
f,C ]
首先查找(f),
(现在光标在,
上)并删除它,之后进入插入模式并放入]
。 C ]
的快捷方式是r]
,它将使用]
替换当前的字符,之后您不必按<Esc>
。ggI[
转到文件开头并进入插入模式并放入[
。8J
- 对于接下来的8行,使其成为一行。ZZ
与:wq
答案 2 :(得分:1)
你必须按键,所以
:%s/.*/"\0",<CR>f,C ]<Esc>ggI[ <Esc>8JZZ
变为
:%s/.*/"\0",Enterf,C ]EscggI[ Esc8JZZ
同样,当您阅读<CR>
表示“立即按回车键”时,<Esc>
也是如此。