想通过字典来改进我的那个自动化空格的函数,由此出现这个问题
帮助文件中有
for key in keys(map)
action
endfor
而我该如何根据那个key获得字典中的值?
试了map.key map[key] 都不行,直接用
for key,num in map
也是不行。
望先行者指教,多谢!
Vim的dictionaries在for中的运用
- 温习江湖
- 帖子: 580
- 注册时间: 2012-06-06 18:20
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: Vim的dictionaries在for中的运用
map[key] 是正确的。
不行是何意?有错误消息不?
不行是何意?有错误消息不?
- 温习江湖
- 帖子: 580
- 注册时间: 2012-06-06 18:20
Re: Vim的dictionaries在for中的运用
多谢!在你的博客里尝到很多东西。lilydjwg 写了:map[key] 是正确的。
不行是何意?有错误消息不?
这里我在很久以前已经改用列表了。
这个本来是要扩展我的那个空格自动化函数的,不过中间搁置了很久,今天终于让它能跑了,帖在这里
代码: 全选
1 """空格自动化
2 let g:space1 = ['+', '-', '*', '/', '%', '^', '<', '>', '=']
3 let g:space2 = [":=", "==", "!=", "<<", ">>", ">=", "<=", "+=", "-=", "/*=" ,"/=", "^=", "&&", "||"]
4 ""let g:space2 = [":=", "==", "!=", "=/~", "!/~", "<<", ">>", ">=", "<=", "+=", "-=", "/*=" ,"/=", "^=", "&&", "||"]
5 """空格自动化
6 inoremap <space> <c-r>=SmartSpace()<CR>
7 function! SmartSpace()
8 ""取上一行光标附近词a:char
9 for key in g:space2
10 echo key
11 endfor
12 let a:char = ''
13 let a:prechar=' '
14 let a:lastchar=''
15 for key in range(-8, 6)
16 let a:char = a:char.getline(line('.')-1)[col('.') + key]
17 endfor
18 ""判断a:char是否含有单个符号
19 for key in g:space1
20 if -1 != match(a:char, '\t'.key.' ')
21 let a:prechar = ' '
22 let a:lastchar = ' '
23 elseif -1 != match(a:char, ' '.key.' ')
24 let a:prechar = ' '
25 let a:lastchar = ''
26 endif
27 endfor
28 ""判断a:char是否含有两个连续符号
29 for key in g:space2
30 if -1 != match(a:char, ' '.key.' ') && 0 != match(a:char, ' '.key.' ')
31 let a:prechar = ' '
32 let a:lastchar = ' '
33 elseif -1 != match(a:char, ' '.key)
34 let a:prechar = ' '
35 let a:lastchar = ' '
36 endif
37 endfor
38 ""当前行两个连续符号
39 let a:char = getline('.')[col('.')-3].getline('.')[col('.')-2]
40 for key in g:space2
41 if a:char == key
42 if "[ \t]" !~ getline('.')[col('.')-4]
43 return "\<left>\<left>".a:prechar."\<right>\<right> "
44 else
45 return " "
46 endif
47 endif
48 endfor
49 ""当前行一个符号
50 let a:char = getline('.')[col('.')-2]
51 for key in g:space1
52 if a:char == key
53 if "[ \t]" !~ getline('.')[col('.')-3]
54 return "\<left>".a:prechar."\<right> ".a:lastchar
55 elseif ' ' =~ getline('.')[col('.')-3]
56 return " "
57 endif
58 endif
59 endfor
60 return " "
61 endfunction