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鍵盤上面很多功能鍵

    • 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 %'
  • 可以的!
  • 然後把這句話寫到 htmlftplugin

總結

  • 這次我們定義了一系列的功能鍵

    • 讓他們可以起到作用
    • 比如保存、編譯、運行一鍵完成
    • 但是不同的文件類型應該有不同的處理方式
    • 我們用 filetype 的機制解決了這個問題
  • 這些映射就像縮寫和摺疊一樣

    • 可以:mkview保存着
  • 除了功能鍵之外

    • 組合鍵能映射麼?
    • 比如ctrl+s之類的?🤔
  • 下次再說!

[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (oeasy 教您零基礎玩轉編輯神器 Vim_Linux 藍橋雲課)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章