有比较系统全面的vimscript教程吗?

Vim、Emacs配置和使用
回复
头像
redhatlinux10
帖子: 773
注册时间: 2008-01-22 23:24
来自: 三亚
联系:

有比较系统全面的vimscript教程吗?

#1

帖子 redhatlinux10 » 2011-06-16 17:36

ibm有个系列教程,使用脚本编写 Vim 编辑器,但是感觉还是简单了点。
vimcdoc依我看不是教程,更多的是一个参考手册。
还有其他的吗?
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 有比较系统全面的vimscript教程吗?

#2

帖子 fanhe » 2011-06-16 23:15

直接中文手册收工, 建议把内置函数看个N次已熟悉能用的设施, 如果你想要没有提供的设施就必须用其他扩展了, 如 python
之后就是先试着改改脚本, 然后自己试着写一些脚本

vim的脚本其实可以面向对象的, 什么抽象啊, 继承啊, 动态绑定啊都可以实现
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 有比较系统全面的vimscript教程吗?

#3

帖子 自由建客 » 2011-06-17 20:21

一直用手册 :em06
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 有比较系统全面的vimscript教程吗?

#4

帖子 自由建客 » 2011-06-17 20:22

fanhe, 人肉模拟,太累了! :em28
头像
acer4740
帖子: 1405
注册时间: 2010-09-13 19:04
来自: 0xFF00EE

Re: 有比较系统全面的vimscript教程吗?

#5

帖子 acer4740 » 2011-06-17 21:37

代码: 全选

:h 41
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 有比较系统全面的vimscript教程吗?

#6

帖子 fanhe » 2011-06-18 12:04

自由建客 写了:fanhe, 人肉模拟,太累了! :em28
字典就是类, 它能保存函数引用, 所以可以实现类方法
用 extend 实现继承, 动态绑定就根本不成问题, 因为本身就是动态类型
仅仅是思维转变过来而已, 没有多复杂

代码: 全选

let g:MyClass = {}
let g:MyClass.a = 10
let g:MyClass.b = 20

function! g:MyClass.Hello()
	echo self.a
	echo self.b
endfunction

let cls1 = copy(g:MyClass)
let cls2 = copy(g:MyClass)
let cls1.a = 100
let cls2.b = 200
call cls1.Hello()
call cls2.Hello()
call g:MyClass.Hello()

let g:MyClass2 = {}
" 继承 g:MyClass
call extend(g:MyClass2, copy(g:MyClass), "keep")

function! g:MyClass2.Hello()
	echo "I am derive class."
	call call(g:MyClass.Hello, [], self)
endfunction

let cls3 = copy(g:MyClass2)
call cls3.Hello()
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 有比较系统全面的vimscript教程吗?

#7

帖子 自由建客 » 2011-06-19 20:29

明白了,一直都在用列表装字段,用下标访问,用一堆带前缀的函数搞。
不过最大的问题总还是赋值兼容性问题,要完全手动控制。
一直比较忌讳用字典,觉得没列表快还比列表占空间。

代码: 全选

let cls1 = copy(g:MyClass)
这样的构造方法太变态了。

其实可以直接来,犯不着用 extend()

代码: 全选

let g:MyClassSub=copy(g:MyClass)
let g:MyClassSub.XXX=xxx
fun g:MyClassSub.FFF()
endfun
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 有比较系统全面的vimscript教程吗?

#8

帖子 fanhe » 2011-06-19 22:34

自由建客 写了:明白了,一直都在用列表装字段,用下标访问,用一堆带前缀的函数搞。
不过最大的问题总还是赋值兼容性问题,要完全手动控制。
一直比较忌讳用字典,觉得没列表快还比列表占空间。

代码: 全选

let cls1 = copy(g:MyClass)
这样的构造方法太变态了。

其实可以直接来,犯不着用 extend()

代码: 全选

let g:MyClassSub=copy(g:MyClass)
let g:MyClassSub.XXX=xxx
fun g:MyClassSub.FFF()
endfun
extend 通用, 你可以用于多继承的时候, extend 在 java 中就是继承的用途

构造方法可以自己写个函数, 如 New(), 然后传参数进去初始化
反正, 自己看着办, 没多复杂的东西
头像
redhatlinux10
帖子: 773
注册时间: 2008-01-22 23:24
来自: 三亚
联系:

Re: 有比较系统全面的vimscript教程吗?

#9

帖子 redhatlinux10 » 2011-06-21 17:51

vimscript的使用范围有限啊,终归只能在vim中使用,这么搞,太复杂了吧。会吓坏一堆小朋友的。
javascript这么搞,还能接受,毕竟现在javascript的大规模应用越来越多了。
对于vimscript吧,我觉得还是用面向过程的思路去搞就可以了。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 有比较系统全面的vimscript教程吗?

#10

帖子 lilydjwg » 2011-06-21 18:19

redhatlinux10 写了:vimscript的使用范围有限啊,终归只能在vim中使用,这么搞,太复杂了吧。会吓坏一堆小朋友的。
javascript这么搞,还能接受,毕竟现在javascript的大规模应用越来越多了。
对于vimscript吧,我觉得还是用面向过程的思路去搞就可以了。
Vim 里可以用 Python, Ruby, Lua, Perl, MzScheme, Tcl,c9s 还有个支持 js 的补丁。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 有比较系统全面的vimscript教程吗?

#11

帖子 fanhe » 2011-06-21 22:15

redhatlinux10 写了:vimscript的使用范围有限啊,终归只能在vim中使用,这么搞,太复杂了吧。会吓坏一堆小朋友的。
javascript这么搞,还能接受,毕竟现在javascript的大规模应用越来越多了。
对于vimscript吧,我觉得还是用面向过程的思路去搞就可以了。
你要处理vim自身事务的时候强行用其他语言扩展, 就知道什么叫蛋疼了

大型点的插件, 用面向对象的话, 会好不少, 例如 NERDTree 之类

后端的处理你可以完全用其他, 但是你要用 vim 表示出来, 还是 vim script 最好用
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 有比较系统全面的vimscript教程吗?

#12

帖子 自由建客 » 2011-06-21 23:40

fanhe 写了:
redhatlinux10 写了:vimscript的使用范围有限啊,终归只能在vim中使用,这么搞,太复杂了吧。会吓坏一堆小朋友的。
javascript这么搞,还能接受,毕竟现在javascript的大规模应用越来越多了。
对于vimscript吧,我觉得还是用面向过程的思路去搞就可以了。
你要处理vim自身事务的时候强行用其他语言扩展, 就知道什么叫蛋疼了

大型点的插件, 用面向对象的话, 会好不少, 例如 NERDTree 之类

后端的处理你可以完全用其他, 但是你要用 vim 表示出来, 还是 vim script 最好用
:em06 用别的语言是很蛋疼
回复