Chinaunix首页 | 论坛 | 博客
  • 博客访问: 428702
  • 博文数量: 114
  • 博客积分: 3361
  • 博客等级: 中校
  • 技术积分: 1060
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-18 13:14
文章分类

全部博文(114)

文章存档

2012年(1)

2011年(84)

2010年(29)

分类: LINUX

2010-05-19 14:02:16

慣於使用所見即所得,或者說喜歡用滑鼠的朋友們,對於 vim 這種好像只能憑藉鍵盤的方式很不習慣。我們可能會說 vim 是不錯,可是不能滑鼠選擇一塊區域,然後按一個鍵,或是一個地方,就可以完成某些事情。比方說有一些軟體可以讓你在編寫網頁的時候,你可以用滑鼠把文字區塊選起來,然後點一個小圖示或是用滑鼠點擊選單就做到把那個區域的前後補上這樣的標籤。雖然 vim 有這麼多強大的功能,有取代、置換、幫你幹嘛幹嘛的,… 難道,就是這樣了嗎? vim 真的不行了嗎?

怎麼可能?只不過這次,我們必須要把前面許多已經討論過的方式綜合在一起使用,而今天使用的就是其中之一的選擇模式(visual mode),透過熱鍵的設定 (Key mapping),就可以輕鬆做到用滑鼠選擇然後按一次鍵就完成目標的事情。


如果你還不太清楚 vim ,建議你可以先參考下列數篇:

一般來說,如果我們想要做到讓 ABCDE 這串東西,變成 ABCDE 的話,照前面我們談過的作法,你可能會想到用:

:%s/ABCDE/ABCDE/g

或者是:

:%s/ABCDE/\1/g

但是如果 ABCDE 這種東西變多了,就是說你有許多不一樣的這些東西都要給上標籤(tag),這種%s的作法,別說你覺得累,我都覺得厭煩。

現在,就請你把 vim 打開,隨意輸入一些字,並且進入指令模式下。
(如果你還沒有 vim ,可以到)

先把答案給你看:

:vmap s

vim_vmap.png

當你輸入這串指令後,試試看用滑鼠選擇,或是和我一樣用鍵盤以 v 加上游標,選取剛才你隨意輸入的那些字,然後按下CTRL+S (就是上面的),你就會發現選擇的那塊文字的前後都被加上了

vim_vmap_result.png

基本的語法是這樣: [mode(模式)] [熱鍵] [執行指令]
所以回過頭來看我們的「答案」:

:vmap s

「vmap」 用來告訴 vim 這樣的按鍵設定只在選擇模式下才使用,

」 就是代表我們的「熱鍵」,意即 CTRL+S。如果你想要的是 ALT+S,那就是

至於後面那一串 s 自然就是我們輸入的指令:

  • 「s」 代表取代;就是說現在選的這個區塊將會被後面的東西所取代;
  • 」 代表 CTRL+R,這是呼叫 vim 裡面使用的 registers(暫存器),而它呼叫的就是「”」這個暫存器,這個暫存器會把在選擇模式 (visual mode) 下用到的 d, c, s, x 等指令「抓取」到的文字區塊,放到「”」這個暫存器裡面(如果你不清楚它們的用法或意義,可以使用 :help d , :help c , :help s, :help x 來查詢)。前面既然我們才剛剛使用過「s」,很明顯,就代表剛剛用滑鼠(或者你和我一樣都用鍵盤)選取到的區域就是放在「”」暫存器裡面,然後把在編輯器上面選擇的區域清除,並且進入輸入的模式。
  • 再看後面的指令:「」這意思是說,先輸入一個「」然後用CTRL+R把「”」暫存器裡面的東西拉出來(還記得「”」裡面裝什麼吧?),然後補上「」,最後為了要讓輸入模式轉到指令模式下,用了「」。

如果你不想再用這個設定了,可以用:

:vunmap

來取消。

好啦,所以同樣的方式你一樣可以用在其他的模式下,相關的詳細使用你可以參考:

:h key-mapping

阅读(1084) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~