vimrc求援

Vim、Emacs配置和使用
回复
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

vimrc求援

#1

帖子 hahagood » 2008-05-15 9:31

学习了一下vim以后,发现非常喜欢这个软件,有点相见恨晚的感觉.突发奇想,打算拿它作为一个随手记录一些东西的工具.但遇到了一些问题,到这里求援了.

首先我的设想是希望一打开vim,见到如下的内容: (论坛里没法保存缩进,我用....代替了.)
=========================
新内容写在此行下:
....
2008年5月14日 23时07分57秒:
....这是已经保存的第一条信息

2008年5月14日 22时08分27秒:
....这是保存的较早的信息

2008年5月14日 21时08分57秒:
....这是保存的更早的信息.
...
...
=========================
使用的时候,基本上是这样的:
一打开文件,我会把最新的内容写在第二行,有一个缩进.
保存的时候,自动把"新内容写在此行下"替换成当时的时间.(这个我已经学会了.)
然后自动在上方插入一个"新内容写在此行下"(这个怎么弄?),
再就是所有保存的信息最好是折叠起来.(看了半天的Help,似乎是要设置foldtext,可不得要领.需要指点.)

总结一下,就是三个需要高手指点一下,
第一是如何在替换第一行为当时时间的时候,再插入一行提示.
第二是如何让记录的信息折叠..
第三是如何在打开文件的时候,光标正好在第二行缩进的位置.
上次由 hahagood 在 2008-05-15 9:36,总共编辑 3 次。
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

#2

帖子 yaoms » 2008-05-15 9:32

。。。。直接shell还方便点。。
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#3

帖子 hahagood » 2008-05-15 9:45

yaoms 写了:。。。。直接shell还方便点。。
我相信用shell应该是一个不错的办法.

可是如果我的记录非常频繁,也许我不想每次保存以后都退出.这样的需求,不知道shell能不能满足?

对于第一个问题,我突然想是不是可以把替换"新内容写在此行下"为当前时间改为替换成:
"新内容写在此行下" \n\t\n 2008年5月15日 09时42分58秒:
我要去试一下看看可不可行.如果行的话,就剩下两个问题,一个是折叠,一个是光标定位.

关于光标定位,我上面说是打开文件时,后来我想了一下,其实应该是每次保存后都需要把光标定位到第二行第一个缩进.
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#4

帖子 hahagood » 2008-05-15 10:30

测试了一下,发现加\n\t\n是不行的.vim报错.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-05-15 10:38

从方法上说。用sed自动插入也不错。
折叠,是不记录到文件的。应该用什么插件,调用函数来完成。你的格式解析要带入这函数。光标位置也可能要函数。或者vim可以带-c -s的启动参数,跑Ex命令或者script。
● 鸣学
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#6

帖子 hahagood » 2008-05-15 11:13

我从网上抄了一段代码,可以把第一行替换成当前时间.可是不知道如何再插入新的一行.

autocmd BufWritePre,FileWritePre *.nb ks|call KeepRec()|'s
fun KeepRec()
..if line("$") > 5
....let l = 5
..else
....let l = line("$")
..endif
..exe "1," . l . "g/Keep Record: /s/Keep Record: .*/Keep Record: <Input below>" .
....\ strftime("%Y %m %d %X")
endfun


格式解析和光标位置的函数也许就是需要高手提示我的内容了.
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#7

帖子 Strange » 2008-05-15 13:00

1.
autocmd的时候,再加入 normal ggyyp
autocmd BufWritePre,FileWritePre *.nb ks|normal ggyyp|call KeepRec()|'s
KeepRec里第一行也改成第二行

2.
折叠写函数交给 foldexpr
fun Aaa()
..if v:lnum > 3
....return 1
..else
....return 0
..endif
endfun

:set foldexpr=Aaa()
:set fdm=expr

3.
autocmd BufRead *.nb normal 2Ge

基本上就是这样了,懒得测试了
强烈支持把vim当作通用编辑器,而不是编程用的,这才是vim的正道
ニンニク入れますか?
x60 with gentoo
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#8

帖子 hahagood » 2008-05-15 14:01

呵呵,多谢了.
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#9

帖子 Strange » 2008-05-15 16:03

lz看看好用不好用啊
不好用的话,回家我试试看
ニンニク入れますか?
x60 with gentoo
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#10

帖子 hahagood » 2008-05-15 16:41

稍稍改动了一下,可以用了.以后再优化它吧.先用起来再说.
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#11

帖子 Strange » 2008-05-15 16:43

恩,还有,可以这些写到filetype plugin里面去,省得vimrc太长
ニンニク入れますか?
x60 with gentoo
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#12

帖子 hahagood » 2008-05-15 16:53

收到!

呵呵.
hahagood
帖子: 71
注册时间: 2006-11-04 9:13

#13

帖子 hahagood » 2008-05-15 17:07

顺便提一下,今天看到说,vimperater出新版了,支持ff3b5.刚安装了,正在试用.呵呵.
回复