表达式 expression
回顾
-
对于
函数 function
,咱们回顾一下- 能够查问
- 能够新建
- 能够调用
- 还能够删除
- 我想用
函数 function
往buffuer
外面写点货色 - 比方写一个 java 的根本程序框架
- 这样一调用就好使了
- 省的本人打了
- 能够么?🤔
追加函数
- 应该如何去找对于写
buffer
的函数呢? -
:h
- 找到用户手册 41.6
- 找到这一类的函数
- 属于 text-functions
- 文本函数
追加函数
:h append()
- 帮忙中提到了 {lnum} 能够是 0
- 我来试试
函数初试
:call append(0,"oeasy o2z o3z")
:call append(0,"111oeasy o2z o3z o4z")
:call append(0,"222oeasy o2z o3z o4z")
:call append(1,"3333oeasy o2z o3z o4z")
- 论断是能够插入
- 一次在指定地位插一行
-
如果想要插入最下面一行
- 应用
:call append(0,"在第一行插入")
- 应用
插入框架
- 再从新进入 vi
:call Oeasy()
- 试验胜利
- 然而这个应该是只对于 java 文件起作用的?
- 应该如何写?
- 先把这段函数复制下来
ftplugin 文件类型插件
- 应用文件类型插件有两种形式
-
所有用户共享文件类型插件
vi /usr/share/vim/vim81/ftplugin/java.vim
-
以后用户独有的文件类型插件
mkdir -p ~/.vim/ftplugin
vi ~/.vim/ftplugin/java.vim
- 函数名改成 Initial
- 保留并退出
文件类型初始化
-
在 css 文件中调用函数
vi Oeasy.css
:call Initial()
- 找不到函数
-
在 java 文件中调用函数
vi Oeasy.java
:call Initial()
- 插入胜利
- 然而这个不够通用
- 要是能关联以后文件的文件名作为类名就好了
应用文件名
:echo expand('%:t:r')
- 这是能够显示以后的文件名的
- 这原理是什么呢?
:h %:t
整合
- 把这个整合到 Initial 函数外面
- 试验胜利
-
我想要调整整个 buffer 的缩进,怎么办呢?
gg=G
- 然而我想把这条命令整合到 Intial 函数外面可能么?
表达式
-
怎么执行失常模式的命令呢?
:h :normal
-
:normal gg=G
- 试验胜利
normal gg=G
是一个命令表达式- 然而怎么在函数外面执行这个表达式呢?
执行命令表达式
- 先 u 回来
:h execute
- 能够在函数外面执行表达式
- 什么是表达式呢?
- 就是方才的 Ex command
:execute "normal gg=G"
- 试验胜利
- 缩进之后我能够保留么?
-
:execute "w"
- 试验胜利
-
:call execute("w")
- 也试验胜利
- 上面尝试放到函数里
在函数里执行表达式
:call Init()
- 调用胜利!
- 缩进和保留都是 ok 的!
建设映射
:source %
:call Id()
:map ... :call Id()<CR>
:10,30>>
...
总结
-
对于 函数
function
-
能够调用别的函数
:call append(0,"oeasy o2z o3z")
-
还能够执行表达式
:call execute("normal gg=G")
-
- 这样就能够把一系列的操作封装到一个函数外面
- 而后在命令行模式调用就能够了
- 但如果我想不必 `:call Init()”
- 而是像
:ls
一样执行:init
,可能么?🤔 - 下次再说!
[Github 地址] (https://github.com/overmind19…)
[Gitee 地址] (https://gitee.com/overmind198…)
[蓝桥实验楼 邀请码 FJWYIMGB] (https://www.lanqiao.cn/course…)