多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 【Vim】使用map自定義快捷鍵

【Vim】使用map自定義快捷鍵

來源:程序員人生   發布時間:2015-06-24 08:11:36 閱讀次數:5144次

map簡介

map是1個映照命令,將經常使用的很長的命令映照到1個新的功能鍵上。map是Vim強大的1個重要緣由,可以自定義各種快捷鍵,用起來自然得心應手。

映照的種類

有5種映照存在:

  • 用于普通模式: 輸入命令時。
  • 用于可視模式: 可視區域高亮并輸入命令時。
  • 用于操作符等待模式: 操作符等待中 (“d”,”y”,”c” 等等以后)。
  • 用于插入模式: 也用于替換模式。
  • 用于命令行模式: 輸入 “:” 或 “/” 命令時。

幾種模式的介紹

  1. Normal Mode
    也就是最1般的普通模式,默許進入vim以后,處于這類模式。

  2. Visual Mode
    1般譯作可視模式,在這類模式下選定1些字符、行、多列。
    在普通模式下,可以按v進入。

  3. Insert Mode
    插入模式,其實就是指處在編輯輸入的狀態。普通模式下,可以按i進入。

  4. Select Mode
    選擇模式。用鼠標拖選區域的時候,就進入了選擇模式。和可視模式不同的是,在這個模式下,選擇完了高亮區域后,敲任何按鍵就直接輸入并替換選擇的文本了。和windows下的編輯器選定編輯的效果1致。普通模式下,可以按gh進入。

  5. Command-Line/Ex Mode
    命令行模式和Ex模式。二者略有不同,普通模式下按冒號(:)進入Command-Line模式,可以輸入各種命令,
    使用vim的各種強大功能。普通模式下按Q進入Ex模式,其實就是多行的Command-Line模式。

命令的組合

同Vim下的其他命令1樣,命令的名字常常由好幾段組成。前綴作為命令本身的修飾符,微調命令的效果。
對map而言,可能有這么幾種前綴:

  • nore
    表示非遞歸。
    遞歸的映照。其實很好理解,也就是如果鍵a被映照成了b,c又被映照成了a,如果映照是遞歸的,那末c就被映照成了b。
  • n
    表示在普通模式下生效
  • v
    表示在可視模式下生效
  • i
    表示在插入模式下生效
  • c
    表示在命令行模式下生效

普通模式的映照命令

map

命令格式:
:map {lhs} {rhs}
其含義是,在:map作用的模式中把鍵系列 {lhs} 映照為 {rhs},{rhs}可進行映照掃描,也就是可遞歸映照。

舉例:
:map td :tabnew .<cr>
含義:在其作用模式(普通、可視、操作符)下,輸入td等價于輸入 :tabnew . <cr>。而普通模式下輸入:tabnew . <cr>就是打開當前目錄
如果再定義綁定 :map ts td,就是指在其作用模式下輸入ts等價于td,也就是打開當前目錄。不過如果沒有特殊需要,1般不建議遞歸映照。

noremap

:noremap和:map命令相對,作用模式和命令格式都相同,只不過不允許再對{rhs}進行映照掃描,也就是{lhs}定義后的映照就是{rhs}的鍵序列,不會再對{rhs}鍵序列重新解釋掃描。它1般用于重定義1個命令,固然如果:map不需要遞歸映照的話,建議使用:noremap
比如:
:noremap ts td
它的意思是在其作用模式下,輸入ts就是輸入td,但是和:map不同的是,此時td再不會做進1步掃描解釋。雖然之前已定義了td,但是不會對td再做掃描。

unmap

:unmap是對應取消:map綁定的{lhs},作用模式相同,命令格式 :unmap {lhs}。
例如:
:unmap td
就是取消在其作用模式中td的綁定,比如之前td被綁定為:tabnew .<cr>,此時此綁定消失。

mapclear

:mapclear時對應取消所有:map綁定的,慎用!

只用于普通模式的

:nmap
:nmap是:map的普通模式板,也就是說其綁定的鍵只作用于普通模式。
例如:
:nmap td :tabnew .<cr>:map td :tabnew .<cr> 在普通模式下等效
:nnoremap
:nnorempa和:nmap的關系和:noremap和:map的關系1樣,只是:nmap的非遞歸版
:nunmap
:nunmap和:nmap的關系和:unmap和:map的關系1樣,取消:nmap的綁定。
:nmapclear
:nmapclear是對應取消所有:map綁定的,慎用!

另外

{rhs} 之前可能顯示1個特殊字符:
* 表示它不可重映照
& 表示僅腳本的局部映照可以被重映照
@ 表示緩沖區的局部映照

到這1步你可以輕松的長吸1口氣,由于相干的命令已都了解了,記不住沒關系,可以隨時:help map1下。

鍵表

<k0> - <k9> 小鍵盤 0 到 9
<S-...> Shift+鍵
<C-...> Control+鍵
<M-...> Alt+鍵 或 meta+鍵
<A-...><M-...>
<Esc> Escape 鍵
<Up> 光標上移鍵
<Space> 插入空格
<Tab> 插入Tab
<CR> 等于<Enter>

特殊參數

有些特殊參數必須映照命令的后邊,在其他任何參數的前面。

<buffer>

<buffer>如果這些映照命令的第1個參數是<buffer>,映照將只局限于當前緩沖區(也就是你此時正編輯的文件)內。比如:
:map <buffer> ,w /a<CR>
它的意思時在當前緩沖區里定義鍵綁定,“,w”將在當前緩沖區里查找字符a。一樣你可以在其他緩沖區里定義:
:map <buffer> ,w /b<CR>
比如我常常打開多個標簽(:tabedit),想要在各自標簽里定義”,w”鍵綁定,那末你只要在每一個標簽頁里分別定義便可,其作用域也只在各自的標簽里。一樣要清除這些緩沖區的鍵綁定也要加上<buffer>參數,比如:
:unmap <buffer> ,w
:mapclear <buffer>

<silent>

<silent>是指履行鍵綁定時不在命令行上回顯,比如:
:map <silent> ,w /abcd<CR>
你在輸入,w查找abcd時,命令行上不會顯示/abcd,如果沒有<silent>參數就會顯示出來。

<special>

<special>1般用于定義特殊鍵怕有副作用的場合。比如:
:map <special> <F12> /Header<CR>

<expr>

<expr>. 如果定義新映照的第1個參數是<expr>,那末參數會作為表達式來進行計算,結果使用實際使用的,例如:
:inoremap <expr> . InsertDot()
這可以用來檢查光標之前的文本并在1定條件下啟動全能 (omni) 補全。
1個例子:

let counter = 0 inoremap <expr> <C-L> ListItem() inoremap <expr> <C-R> ListReset() func ListItem() let g:counter += 1 return g:counter . '. ' endfunc func ListReset() let g:counter = 0 return '' endfunc

在插入模式下,CTRL-L插入順序的列表編號,并返回;CTRL-R復位列表編號到0,并返回空。

<unique>

<unique>1般用于定義新的鍵映照或縮寫命令的同時檢查是不是該鍵已被映照,如果該映照或縮寫已存在,則該命令會失敗

<Leader>和mapleader變量

mapleader變量對所有map映照命令起效,它的作用是將參數<leader>替換成mapleader變量的值,比如:
:map <Leader>A oanother line<Esc>
如果mapleader變量沒有設置,則用默許的反斜杠代替,因此這個映照等效于:
:map A oanother line<Esc>
意思時輸入A鍵時,在下1行輸入another line并返回到普通模式。
如果設置了mapleader變量,比如:
let mapleader = ","
那末就等效于:
:map ,A oanother line<Esc>

<LocalLeader>和maplocalleader變量

<LocalLeader>和<Leader>類似,只不過它只作用于緩沖區。
因此在設置mapleader和maplocalleader時最好辨別開,不要出現沖突。

轉載請注明作者Jason Ding及其出處
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354進入我的博客主頁

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91久久精品国产91性色tv | 国产一区二区日韩欧美在线 | 久久中文字幕不卡一二区 | 亚洲亚洲人成网站在线观看 | 爆操网站 | 今天免费中文字幕视频 | 欧美人与禽xoxo牲伦交 | 日本一本高清v免费视频 | 最近中文字幕免费4 | 成人hd| 一级特黄aa毛片免费观看 | 日韩色网站| 内部片免费一区 | 日本一级毛片视频无遮挡免费 | 亚洲黄色高清视频 | 亚洲v天堂v手机在线观看 | 亚洲最大免费视频网 | 亚洲精品一区二区三区国产 | 99伊人网| 亚洲精品自拍 | 成人欧美在线 | 亚洲欧美日韩精品中文乱码 | 亚洲精品中文字幕字幕 | 欧美国产亚洲一区二区三区 | 日韩在线视频不卡一区二区三区 | 欧美毛片| 国产女人在线 | 亚洲jizzjizz | 欧美激情区 | 暮色大丽菊 | 久久久久国产精品 | 国产乱码一区二区三区四 | 国产精品成熟老女人 | 另类图片成人偷拍 | 免费看在线爱爱小视频 | 亚洲福利在线观看 | 亚洲视频在线观看免费视频 | 波多野结衣亚洲一区二区三区 | 亚洲成a人在线观看 | 国产亚洲欧美在线观看的 | 欧美人与禽xoxo牲伦交 |