`
richiewu
  • 浏览: 35355 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

自动提示任意英文单词 - 用Vim快速编写文档

 
阅读更多

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-recipes

    在“Searching”章节中,作者详细介绍了在Vim中如何进行搜索操作,包括改变字体、最大化屏幕空间、创建菜单和工具栏按钮、搜索任意单词、跨多个文件搜索以及搜索和替换指定文本。此外,还包括了如何创建正则表达式和...

    大家来学VIM

    - **紧急恢复**:如果编辑过程中发生意外退出,VIM会自动创建备份文件,使用`:e #`可以恢复。 #### 十一、视图与窗口管理 - **视图操作**:使用`:vsplit`分割窗口,使用`:tabnew`打开新标签页。 - **标记指令**:...

    vim使用教程

    - **Vim线上说明文件的制作**:通过编写特定格式的文档来生成帮助文件。 综上所述,vim编辑器是一款功能强大且高度可定制的文本编辑器,适合于各种场景下的文本编辑工作。通过学习本文提供的基础知识与高级技巧,...

    C edit with vim howto

    本文档提供了关于如何使用 Vim 更高效地编写 C/C++ 程序的一些基本技巧和提示。熟练掌握这些技巧能够显著提升编程效率,帮助开发者更专注于代码逻辑而非编辑细节。通过持续练习和探索 Vim 的高级功能,程序员可以...

    Vi-iMproved使用学习全集(pdf)

    《Vi-iMproved使用学习全集》是一本深入探讨Vim编辑器的全面教程,旨在帮助用户掌握这一强大工具的所有核心功能和高级技巧。Vim,全称Vi IMproved,是经典的Vi编辑器的增强版,它在保留Vi原有特性的同时,引入了更多...

    vi编译器的使用说明

    ### Vi编译器的使用说明 #### 一、Vi 编辑器简介 Vi(Visual Editor)是一款在 Unix 和类 Unix 系统中广泛使用的文本编辑器,它以功能...无论是对于日常的文档编写还是编程工作,熟练掌握 Vi 都将带来极大的便利。

    西北工业大学-操作系统实验报告-实验三.doc

    2. 使用 vi 编写一个 C 程序,要求该程序通过命令行接收用户的输入,其输入参数为 FreeBSD 系统中的任意文本文件,接收输入后,C 程序读取该文件内容,并打印在屏幕上。 3. 详细记录学习的内容和实验的整个过程,...

    php网络开发完全手册

    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程序...

Global site tag (gtag.js) - Google Analytics