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键选择需要的单词:
分享到:
相关推荐
在“Searching”章节中,作者详细介绍了在Vim中如何进行搜索操作,包括改变字体、最大化屏幕空间、创建菜单和工具栏按钮、搜索任意单词、跨多个文件搜索以及搜索和替换指定文本。此外,还包括了如何创建正则表达式和...
- **紧急恢复**:如果编辑过程中发生意外退出,VIM会自动创建备份文件,使用`:e #`可以恢复。 #### 十一、视图与窗口管理 - **视图操作**:使用`:vsplit`分割窗口,使用`:tabnew`打开新标签页。 - **标记指令**:...
- **Vim线上说明文件的制作**:通过编写特定格式的文档来生成帮助文件。 综上所述,vim编辑器是一款功能强大且高度可定制的文本编辑器,适合于各种场景下的文本编辑工作。通过学习本文提供的基础知识与高级技巧,...
本文档提供了关于如何使用 Vim 更高效地编写 C/C++ 程序的一些基本技巧和提示。熟练掌握这些技巧能够显著提升编程效率,帮助开发者更专注于代码逻辑而非编辑细节。通过持续练习和探索 Vim 的高级功能,程序员可以...
《Vi-iMproved使用学习全集》是一本深入探讨Vim编辑器的全面教程,旨在帮助用户掌握这一强大工具的所有核心功能和高级技巧。Vim,全称Vi IMproved,是经典的Vi编辑器的增强版,它在保留Vi原有特性的同时,引入了更多...
### Vi编译器的使用说明 #### 一、Vi 编辑器简介 Vi(Visual Editor)是一款在 Unix 和类 Unix 系统中广泛使用的文本编辑器,它以功能...无论是对于日常的文档编写还是编程工作,熟练掌握 Vi 都将带来极大的便利。
2. 使用 vi 编写一个 C 程序,要求该程序通过命令行接收用户的输入,其输入参数为 FreeBSD 系统中的任意文本文件,接收输入后,C 程序读取该文件内容,并打印在屏幕上。 3. 详细记录学习的内容和实验的整个过程,...
1.1.4 相关资源及自学提示 4 1.2 PHP的应用范围及案例 5 1.2.1 PHP可以做什么 5 1.2.2 PHP擅长的几个领域及产品介绍 5 1.2.3 PHP不适合做什么 6 1.2.4 其他案例 6 1.3 PHP的Hello, world预览 6 1.3.1 第一个PHP程序...