乐趣区

关于vim:oeasy教您玩转vim-74-功能键Fn映射map进阶

映射 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 键盘下面很多功能键

    • f1f12
    • 咱们还没有用上
  • 能够给他们映射上么?🤔

功能键映射

  • 第一个 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 %'
  • 能够的!
  • 而后把这句话写到 htmlftplugin

总结

  • 这次咱们定义了一系列的功能键

    • 让他们能够起到作用
    • 比方保留、编译、运行一键实现
    • 然而不同的文件类型应该有不同的解决形式
    • 咱们用 filetype 的机制解决了这个问题
  • 这些映射就像缩写和折叠一样

    • 能够 :mkview 保留着
  • 除了功能键之外

    • 组合键能映射么?
    • 比方 ctrl+s 之类的?🤔
  • 下次再说!

[Github 地址] (https://github.com/overmind19…)
[Gitee 地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码 FJWYIMGB] (oeasy 教您零根底玩转编辑神器 Vim_Linux 蓝桥云课)

退出移动版