最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

oeasy教您玩轉(zhuǎn)vim - 73 - # 映射map

2021-12-23 07:36 作者:oeasy  | 我要投稿

映射map

回憶上次縮寫(xiě)的細(xì)節(jié)

  • 這次了解到了:abbrivate縮寫(xiě)

  • 可以定義縮寫(xiě)

    • :ab o1z oeasy

    • 這里面還可以包括方向鍵、回車(chē)鍵之類(lèi)的東西

  • 可以定義到指定的模式

    • iab

    • cab

  • 查看縮寫(xiě)

    • :ab - 所有的

    • :ab o1z - o1z

  • 自動(dòng)補(bǔ)全

    • ctrlp

    • ctrln

  • 這些縮寫(xiě)都可以保存在視圖里

    • 保存的選項(xiàng)在viewoption

  • 可以保存的除了 縮寫(xiě)abbreviate 還有個(gè) 映射map

  • 映射map 什么意思呢???

關(guān)于映射

  • 映射就是map

  • 比如按下什么什么就相當(dāng)于按下什么什么之類(lèi)的

  • 系統(tǒng)里面有

  • 比如mac系統(tǒng)中修飾鍵設(shè)置的第一條

  • 把CapsLock映射到Esc

  • 這樣大寫(xiě)鎖定就失效了

  • 但是小拇指左移一下就可以按下Esc

  • 超級(jí)方便

  • 再也不用ctrl+c了

  • 做實(shí)驗(yàn)的時(shí)候也好使

  • 只要是按下CapsLock

  • 就相當(dāng)于按下Esc

  • 這就是 映射map

建立映射 - ?mapping

  • 快速進(jìn)入命令模式

    • :map ; :

    • ; 映射成 :

    • 這樣我們就可以不用摁下shift

    • 直接通過(guò)小拇指就可以進(jìn)入命令模式了

    • 還是很方便的

map 映射

  • 我們可以使用

  • :map Y y$定一個(gè)映射

    • map是命令的名字

    • Y 是被映射的鍵

    • y$ 是映射到的鍵

  • 從此按下Y,就相當(dāng)于y$

  • 我們來(lái)試一下

    • 在行的中間位置,按下Y

    • :reg 觀察默認(rèn)寄存器

  • 現(xiàn)在復(fù)制的是從光標(biāo)到結(jié)尾

  • 我想要的是一整行,怎么辦呢?

重新映射

  • :map! Y 0y$定一個(gè)映射

    • map是命令的名字

    • Y 是被映射的鍵

    • 0y$ 是映射到的鍵

  • 可是我現(xiàn)在命令模式下只要Y就自動(dòng)變成0y$

  • 但是其實(shí)我們主要需要映射正常模式下的;

  • 能否強(qiáng)調(diào)這一個(gè)點(diǎn)呢?

不同模式

  • 不同模式有不同的映射map命令

    • :map 所有模式

    • :vmap 可視化模式 visual

    • :nmap 正常模式 normal

    • :omap operartor-pending 被定義的鍵可以作為一個(gè)motion來(lái)使用

    • :map! 插入和命令行模式

    • :imap 插入模式 insert

    • :cmap 命令行模式 command

  • 這樣我們可以知道

  • :nmap ; :

    • 在正常模式下把;換成:

    • 這樣也就快速進(jìn)入了命令模式

  • 不過(guò)這樣在normal模式下;就不好用了

  • ;在normal模式下做什么用的呢?

原始定義

  • :h ;

  • 原來(lái)是重復(fù)行內(nèi)查找的

  • 直接這樣的話,原來(lái)的功能就不能用了

  • 我想要取消映射map

  • 應(yīng)該怎么辦呢?

  • 我想先看看都有哪些映射

查看所有映射map

  • 我們可以找到這個(gè)map映射關(guān)系

  • 然后想要取消映射

  • 去哪里找呢?

  • 解鈴換需系鈴人

取消映射map

  • 就和:ab、:una一樣

  • :map也有自己的:unmap

    • :unmap ;

  • 這樣就恢復(fù)了原來(lái)的行內(nèi)替換

  • ;:的映射消失了

我們?cè)僭囋嘫

  • 定義Y并驗(yàn)證

    • :nmap Y y$

    • :reg "

  • 重新定義Y

    • :nmap Y 0y$

    • :reg "

觀察映射

  • :map可以觀察所有已經(jīng)存在的映射

  • 第一列是模式

  • 第二列是映射觸發(fā)鍵

  • 第三列是映射對(duì)應(yīng)處理方式

  • 如果我們想查看插入模式下;對(duì)應(yīng)什么操作

    • :imap ;

    • :nmap Y

  • Q進(jìn)入Ex命令模式

映射為空

  • 還記得我們?nèi)∠较蜴I的操作嗎?

    • :map <LEFT> <nop>

    • :map <UP> <nop>

    • :map <RIGHT> <nop>

    • :map <DOWN> <nop>

  • <nop>就是什么都不做

    • 對(duì)應(yīng)No Operation Performed

    • 這原來(lái)是一條匯編指令,指令著讓cpu空輪一個(gè)周期

  • 但是我們現(xiàn)在想想

    • 我們?yōu)槭裁匆舴较蜴I?

    • 是為了讓手放在核心區(qū)不動(dòng)

    • 但是這指的是Normal模式

  • 如果是命令模式,我們?cè)趺崔k?

  • 我們需要方向鍵控制光標(biāo)左右運(yùn)動(dòng)

  • 也需要shift或ctrl配合方向鍵控制光標(biāo)快速移動(dòng)

  • 也就是說(shuō)Normal模式方向鍵不做任何事,Command模式下還可以用

  • 所以

    • :nmap <LEFT> <nop>

    • :nmap <UP> <nop>

    • :nmap <RIGHT> <nop>

    • :nmap <DOWN> <nop>

  • 但是如果我們這樣的話

  • 縮寫(xiě)sysout是否就不能順利完成了呢?

驗(yàn)證

:map <left> <nop>:set nopaste :ab sysout System.out.println("");<left><left><left>

  • 然后在插入模式下輸入sysout空格

  • 還是可以自動(dòng)變成復(fù)雜的格式的System.out.println("");

奇怪的腦洞

  • 如果我

:map j k :map k j

  • 會(huì)發(fā)生什么?

  • 那么這個(gè)東西如何處理呢?

取消重復(fù)映射

:noremap j k :noremap k j

  • 這樣就把j、k真的對(duì)調(diào)了

取消重復(fù)縮寫(xiě)

  • 試了一下

  • 并沒(méi)有發(fā)現(xiàn)重復(fù)縮寫(xiě)的可能性

  • 不過(guò)ab的替換結(jié)果可能會(huì)觸發(fā)map

:set nopaste:ab @a ad:imap ad adder

  • 然后在插入模式下@a

  • 通過(guò)ad就變成了adder

  • 所以有的時(shí)候ab也需要noreab

歧義

  • 我們定義了兩個(gè)映射

    • :map aa oeasy

    • :map aaa o2z

  • 這個(gè)時(shí)候我們輸入aa會(huì)如何?

  • 試一下

  • 輸入aa之后他會(huì)等待

  • 如果下一個(gè)是Space或者CR

    • 那么對(duì)應(yīng)oeasy

  • 如果下一個(gè)是a

    • 那么對(duì)應(yīng)o2z

  • 這種map映射和縮寫(xiě)abbreviate很像啊

  • 縮寫(xiě)就很像是插入模式下的一種特殊的映射

  • 不過(guò)兩者還是有不同的

  • 兩者有什么不同呢?

比較映射和縮寫(xiě)

  • 不同點(diǎn)

    • 縮寫(xiě)就是把縮寫(xiě)形式補(bǔ)全成完整形式,原縮寫(xiě)形式消失

    • 映射可以做更多的操作,比如復(fù)制粘貼之類(lèi)的編輯操作

    • 縮寫(xiě)在插入模式下按回車(chē)或者空格或tab就可以觸發(fā)

    • 映射要自己定義對(duì)應(yīng)的按鍵

    • 縮寫(xiě)abbreviate側(cè)重于輸入(對(duì)應(yīng)插入和命令行模式)

    • 映射map可以存在于更多模式

    • 側(cè)重模式不同

    • 觸發(fā)條件不同

    • 效果不同

  • 相同點(diǎn)

    • noremap

    • noreabbrev

    • 首先他們都是為了快速輸入和操作而存在的

    • 他們都可以取消重復(fù)

總結(jié)

  • 這次了解到了:map映射

  • 可以定義映射

    • :map ; :

  • 查詢(xún)映射

    • :map

    • :map ;

  • 還可以取消映射

    • :unmap

  • 可以映射到指定的模式

    • :map 所有模式

    • :vmap 可視化模式 visual

    • :nmap 正常模式 normal

    • :omap operartor-pending 被定義的鍵可以作為一個(gè)motion來(lái)使用

    • :map! 插入和命令行模式

    • :imap 插入模式 insert

    • :cmap 命令行模式 command

  • 可以映射到什么也不做

    • :nmap h <nop>

  • 還可以避免再次映射

    • :noreabbrev o1z oeasy

  • 最后我們比較了縮寫(xiě)和映射的異同

    • 縮寫(xiě)映射 都是可以:mkview保存的

    • 也可以寫(xiě)到~/.vimrc作為基礎(chǔ)映射

    • 還可以寫(xiě)到具體的 filetype 中做一些專(zhuān)門(mén)的操作

  • 但是其實(shí)101鍵盤(pán)上面很多功能鍵

    • f1-f12

    • 我們還沒(méi)有用上

  • 可以給他們映射上么???

  • 下次再說(shuō)!

[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (oeasy 教您零基礎(chǔ)玩轉(zhuǎn)編輯神器 Vim_Linux 藍(lán)橋云課)


oeasy教您玩轉(zhuǎn)vim - 73 - # 映射map的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
承德县| 繁峙县| 蓝田县| 莲花县| 沾化县| 勐海县| 天津市| 太仓市| 郎溪县| 苍南县| 杭锦后旗| 铜陵市| 长岭县| 石首市| 松溪县| 通河县| 嘉义县| 哈尔滨市| 井陉县| 丹东市| 铜陵市| 来凤县| 长春市| 台安县| 巴彦淖尔市| 扶余县| 石城县| 神木县| 金川县| 玉林市| 腾冲县| 赤壁市| 深水埗区| 景洪市| 中山市| 澜沧| 叙永县| 漳平市| 大新县| 榆林市| 民县|