oeasy教您玩轉(zhuǎn)vim - 74 - # 功能鍵Fn映射map進階
映射map
回憶上次縮寫的細(xì)節(jié)
上次了解到了
: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
作為基礎(chǔ)映射還可以寫到具體的
filetype
中做一些專門的操作但是其實101鍵盤上面很多功能鍵
f1-f12
我們還沒有用上
可以給他們映射上么???
功能鍵映射
第一個f1是有映射的
如果在終端模式下運行就會到幫助文件
如果在圖形化的終端模式下運行就會到terminal的幫助
f2我們可以映射么?
:map <F2> gg=G
注意這個時候map空格之后
可以直接按下f2
就直接輸入<F2>
很好使!
但是我們應(yīng)該再限制一下,映射只會出現(xiàn)在Normal模式
:nmap <F2> gg=G
我們再試一個
快速插入日期
我們需要在文章最后寫一個日期時間
執(zhí)行
:read !date
把外部命令
date
的結(jié)果read到buffer上然后<CR>是回車Carriage
退回到正常模式
整個操作完成
插入的內(nèi)容就是
Date:
:map <F2> oDate: <ESC>:read !date<CR>
o的意思是換行插入
esc退回到正常模式
:
進入命令模式真的能用!?。?/p>
這樣就可以快速插入落款日期了
還可以進行一些修改
:map <F2> oDate: <ESC>:read !date<CR>kJ
k
向上一行J
把當(dāng)前行和下一行鏈接如果要求在文本最后插入的話
:map <F2> GoDate: <ESC>:read !date<CR>
其實我們常用的就是程序的編譯運行之類的
這個映射能干么?
運行python程序
這次我們用<F5>來干這個事情
我們先在命令行里面走一遍
:!python3 %
其中%是當(dāng)前文件名
相當(dāng)于
:!python3 oeasy.py
:h c_%

把他轉(zhuǎn)化為映射
: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
能否根據(jù)文件類型進行區(qū)分呢?
文件類型映射
觀察文件類型檢測
:filetype

具體的文件應(yīng)該放在哪兒呢?

具體操作
在
~/.vim/ftplugin/
下面放入文件類型的配置文件~/.vim/ftplugin/java.vim
對應(yīng)java文件~/.vim/ftplugin/python.vim
對應(yīng)python文件

現(xiàn)在我們就分別對于java和python文件定義了F5這個操作
其實網(wǎng)頁編輯也很常見
如何在網(wǎng)頁中一鍵預(yù)覽?
一鍵預(yù)覽火狐
本終端開火狐
firefox
!firefox
首先在終端上可以另開一個火狐進程
讓火狐瀏覽你的網(wǎng)頁
我們的終端是xfce的
如果是gnome的話也類似
這可以在終端中新開一個終端
新終端中運行火狐
xfce4-terminal -e 'firefox'
xfce4-terminal -e 'firefox oeasy.html'
把這套放到vim里面跑一下
:!xfce4-terminal -e 'firefox %'
成功在vim里跑了起來
然后就是映射map
:map <F5> :!xfce4-terminal -e 'firefox %'
可以的!
然后把這句話寫到
html
的ftplugin
中
總結(jié)
這次我們定義了一系列的功能鍵
讓他們可以起到作用
比如保存、編譯、運行一鍵完成
但是不同的文件類型應(yīng)該有不同的處理方式
我們用
filetype
的機制解決了這個問題這些映射就像縮寫和折疊一樣
可以
:mkview
保存著除了功能鍵之外
組合鍵能映射么?
比如ctrl+s之類的???
下次再說!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒灅?邀請碼FJWYIMGB] (oeasy 教您零基礎(chǔ)玩轉(zhuǎn)編輯神器 Vim_Linux 藍(lán)橋云課)