在我的vimrc文件我有以下的條目的前後加上「+」字的字:Vim的映射,圍繞一個字符
:nnoremap <silent> q+ wbi+<ESC>ea+<Esc>
我想改變這種包圍與任何其他符號字,例如一個報價,但我不想使用另一個插件或插入一個更多的地圖。我想在我的vimrc中這樣的東西:
:nnoremap <silent> qX wbiX<ESC>eaX<Esc>
其中X將字符放在單詞。
這怎麼可以在VIM中完成?
感謝
在我的vimrc文件我有以下的條目的前後加上「+」字的字:Vim的映射,圍繞一個字符
:nnoremap <silent> q+ wbi+<ESC>ea+<Esc>
我想改變這種包圍與任何其他符號字,例如一個報價,但我不想使用另一個插件或插入一個更多的地圖。我想在我的vimrc中這樣的東西:
:nnoremap <silent> qX wbiX<ESC>eaX<Esc>
其中X將字符放在單詞。
這怎麼可以在VIM中完成?
感謝
總體思路:
:nnoremap q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
但我不認爲q
是一個不錯的選擇,尤其是對於行情的例子,因爲q
開始從VIM的extremely handy recording feature。正常的q
命令也期望第二個字符(記錄目標寄存器),它實際上可以是"
。當你在另一臺計算機上或其他人正在使用vim時,這會讓你感到困惑。您應該preprend a leader爲q
。在對領導:
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
默認領袖值爲\
,但是這是可以改變的。請注意,在定義映射之前必須對其進行更改。您可以看到當前配置的領導let mapleader
(如果沒有配置領導,則打印錯誤消息)。有了這些語句,
:let mapleader=','
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal wbi".c."\eea".c."\e"<CR>
您可以鍵入,q+
與+
和,q"
包圍,以圍繞與"
你的話你的話。
順便說一句:如果你的光標在線上的最後一個字符上,你的映射不起作用。將映射更改爲:
:nnoremap <leader>q :let c=nr2char(getchar())\|:exec "normal viwo\ei".c."\eea".c."\e"<CR>
我真的很感激你的答案,因爲它不僅解決了我的問題,同時也介紹了我一些有用的Vim syntatic和語義結構。謝謝! – mljrg