当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Vim的dictionaries在for中的运用
帖子发表于 : 2013-02-21 10:47 
头像

注册: 2012-06-06 18:20
帖子: 582
送出感谢: 4
接收感谢: 11
想通过字典来改进我的那个自动化空格的函数,由此出现这个问题


帮助文件中有

for key in keys(map)
action
endfor

而我该如何根据那个key获得字典中的值?

试了map.key map[key] 都不行,直接用
for key,num in map
也是不行。

望先行者指教,多谢!


_________________
Vimwiki建的小博客 wweir.org

历史的车轮压过一切,任何人或事物都留在了车辙里,只有思想和智慧或附在车辄上走上那么一段时间


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Vim的dictionaries在for中的运用
帖子发表于 : 2013-02-26 18:56 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
map[key] 是正确的。

不行是何意?有错误消息不?


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Vim的dictionaries在for中的运用
帖子发表于 : 2013-04-05 18:30 
头像

注册: 2012-06-06 18:20
帖子: 582
送出感谢: 4
接收感谢: 11
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


_________________
Vimwiki建的小博客 wweir.org

历史的车轮压过一切,任何人或事物都留在了车辙里,只有思想和智慧或附在车辄上走上那么一段时间


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译