oeasy教您玩转vim - 83 - # 表达式Expression
表达式 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/ftpluginvi ~/.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地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)
oeasy教您玩转vim - 83 - # 表达式Expression的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- linux curl命令的重要用法:发送GET/POST请求,获取网页内容
curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合 传输工具,但按传统,习惯称url为下载工具. #使用curl发送GET ...
- MySQL查询某个字段含有字母数字的值
1.正则表达式(REGEXP) 查询MySQL表中某个字段含有字母和数字的值,可以使用正则表达式(REGEXP)来匹配这样的模式.在MySQL中,正则表达式是一个强大的工具,可以用来搜索和匹配字符串中 ...
- 我对IdentityServer4的初步了解
官网:https://identityserver4.readthedocs.io/en/latest/quickstarts/2_interactive_aspnetcore.html 官网例子:h ...
- 一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署)
一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署) 本文将简要简要介绍本人自建NAS的完整配置,截至发文此NAS已经连续良好运行一年,应当说具有良好的稳定性. 本文所述配置包含洋垃圾成分, ...
- 使用Express写接口
接口规范 随着前后端分离越来越普遍, 后端接口规范也就越来越重要了,一套良好的接口规范可以提升工作效率, 减少沟通障碍.通常我们都会采用RestfulApi方式来提供接口, 使用 JSON 来传输数据 ...
- SpringBoot系列(七) jpa的使用,以增删改查为例
JPA是Java Persistence API的简称,Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 它是SUN公司推出的一套基 ...
- 自建yum源
自定义yum本地仓库 你不需要依赖外网的yum仓库,可能导致该仓库无法访问,下载软件失败.. 大公司,会自建yum仓库 防止出现网络问题,自建了yum仓库,本地yum仓库 你可以去阿里云上,部署一个在 ...
- 18.9k star!一个高性能的嵌入式分析型数据库,主要用于数据分析和数据处理任务。
大家好,今天给大家分享的是一个开源的面向列的关系数据库管理系统(RDBMS). DuckDB是一个嵌入式的分析型数据库,它提供了高性能的数据分析和数据处理能力.DuckDB的设计目标是为数据科学家.分 ...
- 泛型模板化设计DEMO
泛型模板化设计DEMO 1. 定义Result泛型类 package com.example.core.mydemo.java.fanxing; public class Result<T> ...
- spark使用jdbc批次提交方式写入phoniex的工具类
一.需求:spark写入phoniex 二.实现方式 1.官网方式 dataFrame.write .format("org.apache.phoenix.spark") .mod ...