共计 1920 个字符,预计需要花费 5 分钟才能阅读完成。
映射 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 蓝桥云课)
正文完