表达式 expression

回忆

  • 关于 函数function ,我们回忆一下

    • 可以查询
    • 可以新建
    • 可以调用
    • 还可以删除
  • 我想用 函数functionbuffuer 里面写点东西
  • 比如写一个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地址] (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的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. T2T-ViT:更多的局部结构信息,更高效的主干网络 | ICCV 2021

    论文提出了T2T-ViT模型,引入tokens-to-token(T2T)模块有效地融合图像的结构信息,同时借鉴CNN结果设计了deep-narrow的ViT主干网络,增强特征的丰富性.在ImageN ...

  2. IIS 部署 Python 环境

    1.安装IIS 勾选特殊CGI程序2.Python 环境 (环境变量配置)3.如果没有pip命令 先下载安装pip python setup.py install4.pip install wfast ...

  3. WordPress网站被黑怎么办?【含解决方案】

    在我们的日常WordPress主题售后工作中,经常会有用户反馈网站出现问题,例如:阿里云提示后门木马文件:打开后跳转到其他地址:页面出现乱码:被添加了其他内容等,根据我们的经验,这种一般都是网站被黑导 ...

  4. Python爬图片(面向对象版)

    import requests from lxml import etree from threading import Thread class Spider(object): def __init ...

  5. go强大的垃圾回收机制。

    一.C语言中返回函数中局部变量值和指针(1) 在C语言中,一个函数可以直接返回函数中定义的局部变量,其实在函数返回后,局部变量是被系统自动回收的,因为局部变量是分配在栈空间,那为什么还可以返回局部变量 ...

  6. Java中GUI

    目录 1.Java GUI 概述 2.容器 2.1 窗口 2.2 弹窗和对话框 对话框 自定义弹窗 2.3 面板 普通面板 滚动面板 分隔面板 选项卡面板 3.布局 3.1.流式布局 3.2.网格布局 ...

  7. sql数据的操作

      /*             数据的写入                 名称 : 库名 表名 字段名 用 反引号包裹                 数据 : 字符串数据使用单引号包裹      ...

  8. 剑指Offer-56.删除链表中重复的结点(C++/Java)

    题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 ...

  9. HTML 使用动态脚本

    这个 HTML 图片框架 这个HTML支持的脚本属于动态的插件形式的程序 用分段数方式实现动画 1定时器 2函数 计算机有四则运算加减乘除 还有一个是 ^ (shift + 6这个符号是余数,8^3是 ...

  10. http请求方式-OkHttpClient

    http请求方式-OkHttpClient import com.example.core.mydemo.http.OrderReqVO; import okhttp3.*; import org.s ...