自动提示任意英文单词 - 用Vim快速编写文档
来源:互联网 发布:软件定义存储 编辑:程序博客网 时间:2024/04/29 18:47
Vim的自动完成提供了多种方法:
1. 整行 |i_CTRL-X_CTRL-L|
2. 当前文件内的关键字 |i_CTRL-X_CTRL-N|
3. 'dictionary' 的关键字 |i_CTRL-X_CTRL-K|
4. 'thesaurus' 的关键字,同义词风格 |i_CTRL-X_CTRL-T|
5. 当前和头文件内的关键字 |i_CTRL-X_CTRL-I|
6. 标签 |i_CTRL-X_CTRL-]|
7. 文件名 |i_CTRL-X_CTRL-F|
8. 定义或宏 |i_CTRL-X_CTRL-D|
9. Vim 命令 |i_CTRL-X_CTRL-V|
10. 用户定义的补全 |i_CTRL-X_CTRL-U|
11. 全能 (omni) 补全 |i_CTRL-X_CTRL-O|
12. 拼写建议 |i_CTRL-X_s|
13. 'complete' 的关键字 |i_CTRL-N|
这里只需要用到Vim的字典补全就能实现自动提示任意单词,首先准备一个比较全面的英文词典:
下载Engspchk这个插件,这个插件用来检查拼写错误,当然平时就可以用,不过这里只需要用到它的英文词典
下载解压后将english.dict不必要的内容删去,比如标题和每行开头的Goodword,再排序成每行一个独立的单词,大概有4.8W个单词
排序是为了Vim缓存这个词典时更节省时间.将排序后的文件保存到$VIMRUNTIME/dict/english.dic,当然文件名任意取,建议这样命名.
接下来,你有两种方法实现自动补全英文单词,分为手动和自动的,自动需要借助neocomplcache这个插件.
手动提示:
如果只需要对txt类型文件提示单词,建立一个ftplugin/txt.vim文件即可,内容包含:
setlocal dictionary=$VIMRUNTIME/dict/english.dic "set dict file
setlocal complete+=k "set complete option
需要补全的时候,比如输入app,再按<C-X><C-K>即可弹出补全菜单以供选择需要的单词.
实际上你可以对所有文件都设置这个词典补全,将这一行加入到.vimrc即可,注意多了个+号
setlocal dictionary+=$VIMRUNTIME/dict/english.dic "set dict file
这也许会在编辑代码的时候造成混乱,提示不需要的单词.
自动提示:
安装好neocomplcache后做如下设置:
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '/*ku/*'
let g:neocomplcache_dictionary_filetype_lists = {
/ 'default' : '',
/ 'txt' : $VIMRUNTIME.'/dict/txt.dic',
/ }
" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '/h/w*'
" Plugin key-mappings.
imap <C-k> <Plug>(neocomplcache_snippets_expand)
smap <C-k> <Plug>(neocomplcache_snippets_expand)
inoremap <expr><C-g> neocomplcache#undo_completion()
inoremap <expr><C-l> neocomplcache#complete_common_string()
" Recommended key-mappings.
" <CR>: close popup and save indent.
"inoremap <expr><CR> (pumvisible() ? "/<C-y>":'') . "/<C-f>/<CR>X/<BS>"
" <TAB>: completion.
inoremap <expr><TAB> pumvisible() ? "/<C-n>" : "/<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> pumvisible() ? neocomplcache#close_popup()."/<C-h>" : "/<C-h>"
inoremap <expr><BS> pumvisible() ? neocomplcache#close_popup()."/<C-h>" : "/<C-h>"
inoremap <expr><C-y> neocomplcache#close_popup()
inoremap <expr><C-e> neocomplcache#cancel_popup()
其中最重要的是设置字典文件:
let g:neocomplcache_dictionary_filetype_lists = {
/ 'default' : '',
/ 'txt' : $VIMRUNTIME.'/dict/txt.dic',
/ }
对txt类型文件应用字典,neocomplcache会在打开txt文件后缓存该字典并自动弹出完成菜单.
用neocomplcache有两个问题仍需解决:
首次打开txt文件的时候不能自动缓存词典,也就不能自动提示,需要手动设置文件类型,提交:set ft=txt这个命令后才会缓存.
每个Vim进程只需要缓存一次,大概耗时5秒钟,视不同机器而定.
当然第二次打开txt类型的文件时能自动缓存,很奇怪的问题.
缓存后的文件顺序有问题,而非升序. 目前正在和作者联系以解决.
最后看看效果图:
输入archit
按tab键选择需要的单词:
- 自动提示任意英文单词 - 用Vim快速编写文档
- vim YouCompleteMe不能自动提示
- Vim自动文档插件----------DoxygenToolkit
- vim 自动补全和自动提示
- vim 自动补全和自动提示
- Linux VIM自动提示插件安装配置
- Vim C/C++自动提示插件
- cscope插件, 项目任意子目录下开vim自动加载.
- vim的自动排版,剪切与拷贝任意区域方法
- doxygen + vim 自动生成C文档教程
- Vim配置#Vim PHP函数 Tab自动提示功能
- Eclipese编写XML自动提示问题
- myeclipse 10设置编写jsp自动提示
- eclipse代码编写过程自动提示
- 如何编写自动读取任意大小文本的程序
- AndroidStudio 文档自动提示&代码提示补全
- AndroidStudio2.0文档自动提示&代码提示补全
- 用Eclipse编写Android程序代码提示,代码自动填补很卡的解决办法
- 冒泡排序同时对下标进行排序
- 发个MatLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数
- 常用正则表达式
- 工具类 mysql操作类
- spring AOP学习一 前置通知
- 自动提示任意英文单词 - 用Vim快速编写文档
- DLL+ ActiveX控件+WEB页面调用例子
- 【转】vpnc用法一例
- 大家好,我的新浪微博http://weibo.com/litaowap,昵称是litaowap,互相关注。
- linux下redis的安装
- 使用Ajax为什么能实现页面无刷新
- push mail 像向用户手持设备上push邮件
- 《ASCE1885的网络编程》---IP数据报格式
- 数据本地缓存方法