映射 map
回顾上次缩写的细节
- 上次理解到了
:map
映射 -
能够定义映射
:map ; :
-
查问映射
:map
:map ;
-
还能够勾销映射
:unmap
-
能够映射到指定的模式
:map
所有模式:vmap
可视化模式 visual:nmap
失常模式 normal:omap
operartor-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>kJ
k
向上一行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/overmind19…)
[Gitee 地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码 FJWYIMGB] (oeasy 教您零根底玩转编辑神器 Vim_Linux 蓝桥云课)