我有时需要写整个字母表abcd…z
,我讨厌在Vim的插入模式下逐个字母输入.有没有更有效的方法来做到这一点?
我知道这个ga
命令给了我光标所在字符的ascii代码...但是不知道如何将它与我的标准解决方案混合来输入从1到(例如)5000的数字:a1ESCqqyyp^Aq4998@q
...
Nik*_*vda 21
使用set nrformats+=alpha
:
ia<Esc>qqylp<C-a>q24@q
Run Code Online (Sandbox Code Playgroud)
一步步:
ia<Esc> " Start with 'a'
qqylp<C-a>q " @q will duplicate the last character and increment it
24@q " Append c..z
Run Code Online (Sandbox Code Playgroud)
glt*_*lts 13
如果你的shell支持扩展,这是一个非常优雅的解决方案:
:r !printf '\%s' {a..z}
Run Code Online (Sandbox Code Playgroud)
:read!
将外部命令的输出读入当前缓冲区.在这种情况下,它会在shell 扩展后读取printf
应用于shell的输出{a..z}
.
这个命令怎么样:
:put =join(map(range(char2nr('a'),char2nr('z')),'nr2char(v:val)'),'')
Run Code Online (Sandbox Code Playgroud)
收集的字符的ASCII值在下述范围a
到z
,然后将它们映射在nr2char()
功能和结果插入到与当前缓冲区:put =
.
当你遗漏封闭的join(
......时,'')
,每个单独的行都会得到字符.
看到
:h nr2char()
,:h char2nr()
,:h :put
,range()
,map()
,join()
和朋友在list-functions
表中.