2010-08-24

把vim打造成笔记软件

之前用的笔记软件是minipad2,是一个很小巧很轻便的软件,功能刚刚够用,但它的操作习惯又与我这种键盘控有点格格不入,还有它是单一平台的,用它来笔记本在其它平台阅读修改有点有点不方便。今天突发奇想,能不能把vim打造成笔记软件呢?


1. 要求
1)速度要快,占用资源要少,毕竟我用的是老机子。
2)生成的记录最好是纯文本,我始终觉得纯文本才是王道,在任何平台都可以轻松打开。

vim完全符合这两点要求,事实上对于我来说vim是常驻内存的,使用其它的任何笔记软件都意味着多添一个进程。
2. 需要插件
1)NERDTree (必需)
2)TxtBrowser  (非必需,推荐)
3)taglist  (非必需,推荐)
4)ctags  (非必需,推荐)

3. 安装方法
1)下载NERDTree http://www.vim.org/scripts/script.php?script_id=1658,解压到vimfiles文件夹。
2)其它三个插件的安装方法可看善用佳软这篇《TxtBrowser: 在Vim中高效处理纯文本(更新)》。
3)在_vimrc中添加如下内容,可根据注解对内容进行修改。

"d:\note\是笔记存放的目录
,f :Tlist<CR><C-W><C-W>:NERDTreeToggle d:\note\<CR><C-W>

"按ctrl+h、l在左右窗口切换
map <c-h> <ESC><c-w>h
map <c-l> <ESC><c-w>l

" ----------------- NERD tree
" http://www.vim.org/scripts/script.php?script_id=1658
let NERDTreeShowHidden = 1
"let NERDTreeWinPos = "right"
let NERDTreeWinPos = "left"
let NERDTreeWinSize = s:PlugWinSize
let NERDTreeBookmarksFile=$VIMDATA.'NerdBookmarks.txt'
let NERDTreeShowHidden = 0                   "不显示隐藏文件夹,只有开启时下一项才有效
let NERDTreeIgnore = ['\.\/$', '\.\.\/$']    "不显示当前文件夹和上一级文件夹
nmap <leader>n :NERDTreeToggle<cr>

" ----------------- taglist.vim 提供源代码文件的函数列表
" http://www.vim.org/scripts/script.php?script_id=273
" 为使用txtbrowser,故使用这个  http://att.newsmth.net/att.php?p.731.55149.1226.vim 修改版
" <F10> 打开关闭TagList窗口,窗口在右边
map <silent> <F10> :TlistToggle<cr>
" http://www.vim.org/scripts/script.php?script_id=273
if has("win32")
    "let Tlist_Ctags_Cmd = $VIM.'/vimfiles/ctags58/ctags.exe' "
    "这条命令在windows7无效,直接把ctags复制到vim72目录就可以
else
    let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'
endif
let Tlist_Show_One_File = 1  "同时显示多个文件和tag,1为只显示当前文件的
let Tlist_Exit_OnlyWindow = 1  " 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1  " 在右侧窗口中显示taglist窗口
"let Tlist_File_Fold_Auto_Close = 1 "非当前文件函数列表折叠隐藏
let Tlist_GainFocus_On_ToggleOpen = 0
let Tlist_WinWidth = s:PlugWinSize
let Tlist_Auto_Open = 0
let Tlist_Display_Prototype = 0
"let Tlist_Close_On_Select = 1
"let Tlist_Process_File_Always=0 "不一直更新tags

"解决提示:Tlist_Refresh_Folds错误
function! s:Tlist_Refresh_Folds()

" Not needed when one file is displayed.
if g:Tlist_Show_One_File
return
endif

let winnum = bufwinnr(g:TagList_title)
if winnum == -1
return
endfunction

autocmd BufRead,BufNewFile *.txt,*.log,*.vtx setlocal ft=txt

4. 使用方法
1)vim的基本使用,这个得google。
2) 运行“,f”打开笔记软件界面。
3)NERDTree的使用方法,看这里
4)TxtBrowser的使用方法,运行“:h TxtBrowser@cn”命令查看。
5)因为vim是支持加密的,所以在有必要的时候可以对笔记内容进行加密(运行“:X”),这样就不会发生《韩峰日记》这样的事了。
10.08.22把vim打造成笔记软件 
(图:把vim打造成笔记软件)

5. 存在问题
1)在windows系统中,NERDTree的m命令无法建立中文文件夹,奇怪的是可以建立中文文件。(原因:未知。解决方法:r!cmd)
2)暂时不知道如何实时刷新NERDTree的缓存。
3)我对vim的多文件搜索并不熟悉,很是缺乏这方面的知识,不知文件多了找起来方不方便(也许只要文件结构管理得好,根本没有找不到的问题,也许可以使用vim帮助文件那样标记的形式)。

(完)

2 条评论:

  1. 每条笔记是一个文件?那文件一多组织起来岂不是很麻烦……

    回复删除
  2. Blogger.com中文用户列表,希望通过这个方式能让更多的Blogger相互了解,看看有没有兴趣
    http://blog.kban.info/p/blogger.html

    回复删除

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。