oeasy教您玩转vim - 74 - # 功能键Fn映射map进阶
映射map
回忆上次缩写的细节
- 上次了解到了
:map映射 可以定义映射
:map ; :
查询映射
:map:map ;
还可以取消映射
:unmap
可以映射到指定的模式
:map所有模式:vmap可视化模式 visual:nmap正常模式 normal:omapoperartor-pending 被定义的键可以作为一个motion来使用:map!插入和命令行模式:imap插入模式 insert:cmap命令行模式 command
可以映射到什么也不做
:nmap h <nop>
还可以避免再次映射
:noreabbrev o1z oeasy
最后我们比较了缩写和映射的异同
- 这
缩写和映射都是可以:mkview保存的 - 也可以写到
~/.vimrc作为基础映射 - 还可以写到具体的
filetype中做一些专门的操作
- 这
但是其实101键盘上面很多功能键
- f1-f12
- 我们还没有用上
- 可以给他们映射上么?
功能键映射
第一个f1是有映射的
- 如果在终端模式下运行就会到帮助文件
- 如果在图形化的终端模式下运行就会到terminal的帮助
f2我们可以映射么?
:map <F2> gg=G- 注意这个时候map空格之后
- 可以直接按下f2
- 就直接输入<F2>
- 很好使!
但是我们应该再限制一下,映射只会出现在Normal模式
:nmap <F2> gg=G
- 我们再试一个
快速插入日期
我们需要在文章最后写一个日期时间
:map <F2> oDate: <ESC>:read !date<CR>o的意思是换行插入
- 插入的内容就是
Date:
- 插入的内容就是
- esc退回到正常模式
:进入命令模式- 执行
:read !date - 把外部命令
date的结果read到buffer上 - 然后<CR>是回车Carriage
- 退回到正常模式
- 整个操作完成
- 执行
- 真的能用!!!
- 这样就可以快速插入落款日期了
- 还可以进行一些修改
:map <F2> oDate: <ESC>:read !date<CR>kJk向上一行J把当前行和下一行链接
如果要求在文本最后插入的话
:map <F2> GoDate: <ESC>:read !date<CR>
其实我们常用的就是程序的编译运行之类的
- 这个映射能干么?
运行python程序
- 这次我们用<F5>来干这个事情
我们先在命令行里面走一遍
:!python3 %- 其中%是当前文件名
- 相当于
:!python3 oeasy.py :h c_%

把他转化为映射
:map <F5> :!python3 %
先保存
:map <F5> :w<CR>:!python3 %<CR>
- 以后就可以一键运行python程序了
编译并运行java程序
仿照上次
:map <F5> :w<CR>:!javac %<CR>- 这样是可以完成编译的
- 然而运行的时候我需要
:!java oeasy- 这就得去掉后缀
:!java %:t:r

最终的映射语句是
:map <F5> :w<CR>:!javac %<CR>!java %:t:r<CR>
- 保存、编译、运行一气呵成
- 不过python、java、html都映射到了F5
- 能否根据文件类型进行区分呢?
文件类型映射
- 观察文件类型检测
:filetype

- 具体的文件应该放在哪儿呢?

具体操作
在
~/.vim/ftplugin/下面放入文件类型的配置文件~/.vim/ftplugin/java.vim对应java文件~/.vim/ftplugin/python.vim对应python文件

- 现在我们就分别对于java和python文件定义了F5这个操作
- 其实网页编辑也很常见
- 如何在网页中一键预览?
一键预览火狐
本终端开火狐
firefox!firefox
首先在终端上可以另开一个火狐进程
xfce4-terminal -e 'firefox'- 我们的终端是xfce的
- 如果是gnome的话也类似
- 这可以在终端中新开一个终端
- 新终端中运行火狐
xfce4-terminal -e 'firefox oeasy.html'- 让火狐浏览你的网页
把这套放到vim里面跑一下
:!xfce4-terminal -e 'firefox %'- 成功在vim里跑了起来
然后就是映射map
:map <F5> :!xfce4-terminal -e 'firefox %'
- 可以的!
- 然后把这句话写到
html的ftplugin中
总结
这次我们定义了一系列的功能键
- 让他们可以起到作用
- 比如保存、编译、运行一键完成
- 但是不同的文件类型应该有不同的处理方式
- 我们用
filetype的机制解决了这个问题
这些映射就像缩写和折叠一样
- 可以
:mkview保存着
- 可以
除了功能键之外
- 组合键能映射么?
- 比如ctrl+s之类的?
- 下次再说!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux 蓝桥云课)
oeasy教您玩转vim - 74 - # 功能键Fn映射map进阶的更多相关文章
- 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内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- pod(二):创建包含多个容器的pod(sidecar)
目录 一.系统环境 二.前言 三.创建包含多个容器的pod 3.1 环境介绍 3.2 在一个pod里创建多个容器 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux ...
- git解决Enter passphrase for key ‘/root/.ssh/id_rsa’: 重复输入密码问题
删除方法: ssh-keygen -p 这里只是删除密码 ssh的pub不会改变. 屏幕快照 2019-12-20 下午4.11.05.png Enter file in which the ...
- Android 12(S) MultiMedia(十四)ESQueue
之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...
- kubernetes: pod升级与回滚扩容与缩容暂停恢复
运行一个容器: apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revisio ...
- mysql忘记密码找回的方法
mysql忘记密码找回的方法: 在找回之前需要对 --skip-networking 参数进行了解 --skip-grant-tables: 关闭mysql验证模块 同时还需要关闭远程连接(避免他人连 ...
- 《剑指offer - 题目1》
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Fluter 编译第一个iOS应用
一.流程说明 1)fluter是一个跨平台UI库,可以一份界面代码在iOS和Android上面运行 2)在Mac上面安装Fluter的环境,相对比较简单,通过简单的命令行可以设置环境 3)可以使用特定 ...
- OpenCV笔记(10) 相机模型与标定
万圣节快乐! 1. 相机模型 针孔相机模型:过空间某特定点的光线才能通过针孔(针孔光圈),这些光束被投影 到图像平面形成图像. 将图像平面在针孔前方,重新把针孔相机模型整理成另一种等价形式, 实际上, ...
- navicat安装和破解
navicat16.0 下载地址: https://download.navicat.com.cn/download/navicat160_premium_cs_x64.exe 破解教程&破解 ...
- [SWPUCTF 2021 新生赛]easyrce
这道题比较简单,打开环境一看就只需要构造一个get传参的命令就行,我们就看一下有些什么文件,构造payload: ?url=system ("ls /"); 看到有个 flllll ...