资讯专栏INFORMATION COLUMN

VIM Script /VIML 脚本语言入门

piapia / 972人阅读

摘要:参考变量设置变量逻辑控制参考中的字符串和数字是可以直接比较的,如,返回函数参考函数名必须大写开头。但是如果重载当前的话,会遇到警告。返回当前文件的名字。所以我们才可以用这样的命令来运行当前脚本。

参考:Learn Vimscript the Hard Way

变量
"设置变量
let myVariable = 1
let myString = "Hello"
逻辑控制

参考:Comparisons - Learn Vimscript the Hard Way

if-else:

if 3 >= 1
    echo "True"
elseif 3 < 4
    echo "True again"
elseif 3 == 3
    echo "True true"
else
    echo "False"
endif

VIM中的字符串和数字是可以直接比较的,如:echo "3" >= 3,返回1.

Functions 函数

参考:Functions - Learn Vimscript the Hard Way

函数名必须大写开头。
function MyFunction()
    :wq
endfunction

但是如果重载当前vimrc的话,会遇到function already exists警告。
所以最好在将函数定义为可重写的函数,即变为function!

function! MyFunction()
    :wq
endfunction
内置函数 has(..)

has("程序语言")

has("硬件架构")

has("xxx")

system(...)

system("rm /tmp/*")

buffer

bufnr("%"): 返回当前VIM中的buffer数量

autocmd 事件触发器

参考非常棒的VIM官方文档(中文翻译):http://vimcdoc.sourceforge.ne...

格式为::au[tocmd] [group] {event} {pat} [nested] {cmd}
中文的话就是::au[tocmd] [组] {事件} {文件名规则} [nested] {命令}

如果命令比较复杂的话,建议创建function,然后在autocmd中call func()

常用技巧 获取当前buffer的文件名、路径、扩展名

参考:How can I see the full path of the current file?
参考:How do I get the name and extension of the current file?

都知道,VIM中%代表当前buffer,我们可以增加filename-modifiers来操作%得到buffer关联的文件的相关信息。

Register %返回当前文件的名字。所以我们才可以用!python %这样的命令来运行当前脚本。
VIM中,%还能做到很多的扩展:

:echo @%                |" directory/name of file
:echo expand("%:p")     |" full path "PATH"
:echo expand("%:p:h")   |" directory containing file "HEAD"
:echo expand("%:t")     |" full name of file "TAIL"
:echo expand("%:t:r")     |" Only name of file "ROOT"
:echo expand("%:e")     |" Only extension of file "EXTENSION"

我们在vimrc中使用的时候,可以省略echo和expand。比如:
nnoremap :!CMD %:p:h,这样可以在按Ctrl-g时候,在当前文件所在的目录执行CMD命令

“获取路径
echo expand("%:p")    "/home/mool/vim/src/version.c

"获取文件全名
echo expand("%:t")   "version.c

"获取文件名,不包括扩展名
echo expand("%:t:r")   "version

"获取扩展名
echo expand("%:e")   "c
Multiple lines 换行

开头,|结尾,即可连接多行为一行。

au Filetype ruby
             setlocal ts=2  |
             setlocal sts=2 |
             ...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25081.html

相关文章

  • 使用python写vim插件

    摘要:原文地址有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言,还得益于它良好的接口实现,从而支持等语言编写插件。当编译时带有特性时就能使用编写插件,则支持,可以使用来查看的编译特性。具体可以查看帮助参考如何用写插件 原文地址 vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件。当vim编译时带...

    antz 评论0 收藏0
  • 使用python写vim插件

    摘要:原文地址有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言,还得益于它良好的接口实现,从而支持等语言编写插件。当编译时带有特性时就能使用编写插件,则支持,可以使用来查看的编译特性。具体可以查看帮助参考如何用写插件 原文地址 vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件。当vim编译时带...

    woshicixide 评论0 收藏0
  • 你也用Vim写Java代码?

    摘要:献给所有曾试图写而痛苦挣扎的请不要害怕我也是你们的一员序文章源起于论坛中的一个问题由于回答的有点尽性便转为文章题主应该是个初学者这里不对题主报有任何贬义的情感谁都是从初学过来的问题主要是如何在中编译运行代码勾起了我痛苦的回忆便借题发挥了更何 献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员 序 文章源起于segmentfault论坛中的一个问题, 由于...

    helloworldcoding 评论0 收藏0
  • 你也用Vim写Java代码?

    摘要:献给所有曾试图写而痛苦挣扎的请不要害怕我也是你们的一员序文章源起于论坛中的一个问题由于回答的有点尽性便转为文章题主应该是个初学者这里不对题主报有任何贬义的情感谁都是从初学过来的问题主要是如何在中编译运行代码勾起了我痛苦的回忆便借题发挥了更何 献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员 序 文章源起于segmentfault论坛中的一个问题, 由于...

    KitorinZero 评论0 收藏0
  • 让人相见恨晚的vim插件:模糊查找神器LeaderF

    摘要:是什么是一个用写的插件,可以在成千上万数十万个文件中,通过模糊查找的方式,快速找到目标文件。它还有很多衍生功能快速打开或定位某个最近使用的文件包括函数类变量等命令历史文件中的某一行的等等。友情链接,也許是最好的模糊查詢插件 提到vim的模糊查找插件,很多人第一反应是ctrlp.vim,ctrlp知名度很高,但跟其它的同类插件相比,它的唯一优点是用vimL编写(这让它的性能是所有同类插件...

    Near_Li 评论0 收藏0

发表评论

0条评论

piapia

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<