在vim中,是否可以使用正則表達式縮寫?例如,類似於vim的縮寫和正則表達式
:iab \([0-9]\{-}\)nm \\SI{\1}{\\nano\\meter}
會將每個例如'50nm'擴展到'\ SI {50} {\ nano \ meter}'。
在vim中,是否可以使用正則表達式縮寫?例如,類似於vim的縮寫和正則表達式
:iab \([0-9]\{-}\)nm \\SI{\1}{\\nano\\meter}
會將每個例如'50nm'擴展到'\ SI {50} {\ nano \ meter}'。
最好的辦法是給自己寫一個小助手功能。點擊全方位完成或用戶定義的完成(C-x C-u
,請參閱:help 'cfu'
)是一個不錯的選擇。我在一個關鍵字上勾畫了imap的常規函數:
function! ExpandNanometers()
let items = matchlist(expand('<cword>'), '\v(\d+)nm')
if len(items) == 0
return
endif
let modified = '\SI{' . items[1] . '}{\nano\meter}'
exec "normal! ciw" . modified
endf
imap <C-l> <C-o>:call ExpandNanometers()<CR>
不是最好的代碼,也許。在插入模式C-l
上綁定時,如果光標位於單詞上或直接位於單詞後面,它將替換單詞50nm
。
我想添加此作爲評論以前的答案,但顯然我不能直到50代表。我也知道這是wayyy爲時已晚,但以供參考:(由分組去接聽)
如果鍵映射是可以接受的,當然像
imap <silent> <leader>obscure-key-of-choice <Esc>:%s/\v(\d+)nm/\\SI{\1}{\\nano\\meter}/g<CR>``i
(即全球替代對整個文件與所需的模式) 會更容易維護?我喜歡避免使用vimscript來讀取/維護.vimrc!很明顯,您可以用您默認的密鑰替換obscure-key-of-choice
。你只需要在鍵入所有文本後再進行一次,所以最好將其他鍵保存爲更常用的綁定!
的快捷方式取代類似
50nm blabla 73nm your-interesting-science-here 89nm
... some new lines...
we love nanometers nm! 34nm and finally 18nm
的東西,如
\SI{50}{\nano\meter} blabla \SI{73}{\nano\meter} your-interesting-science-here \SI{89}{\nano\meter}
... some new lines...
we love nanometers nm! \SI{34}{\nano\meter} and finally \SI{18}{\nano\meter}
你試試?它有用嗎? – romainl
如何行':iab。*今天的工作已經完成。' – Kent
Har har har。但是vim只是從字面上解釋'。*'和上面的表達式。 – Genausactly