vim中經常會寫print "a=%s"%a,這樣的代碼,可是每次都得現輸,怎麼快速輸入?直接替掉a


你這個語法有點奇怪,你確定 a 前面也要加 % 嗎?確定逗號位置對嗎?當然,這些不影響回答問題……

我推薦使用 SirVer/ultisnips · GitHub 插件。具體使用方式,你可以查閱文檔,我複製一段文檔里提供的 printf 的配置。

snippet printf
printf("${1:%s}
"${1/([^%]|%%)*(%.)?.*/(?2:, :);)/}$2${1/([^%]|%%)*(%.)?.*/(?2:);)/}
endsnippet

———————

我觀摩了一下 UltiSnips 的 Demo 錄像,發現錄像里的 print 就是題主的用法,原來這就是 python 啊……呵呵自己一下。:-p


謝邀,雖然這個問題比較中二。。不過還是本著一顆解救生靈於水火的心回答一下吧。。。

首先,就我所理解,你需要解決的是一個調試時重複輸入一個變數名的問題。

那麼,就這個問題,有三種可能的方案(優劣稍後再分析):

1. 如題主想要的,編輯器自動生成並插入代碼

2. 自定義宏來解決 (如果語言本身不支持宏定義,那可能需要想辦法hack一下,如我在這裡做的事情Home · luochen1990/coffee-mate Wiki · GitHub)

3. 通過調試工具來解決調試不方便的問題

方案1可以說是最次的。因為這僅僅是解決了第一次輸入時重複輸入的問題,如果之後要把「列印a」改成「列印b」,你還是得同時改兩個地方,這是很中二的做法。。

方案2可以說是最優的,但是能不能實現也受限於語言。因為通過宏解決重複問題,不僅僅對於調試這個場景管用,還對於很多其它場景下的避免重複有用,可以說習得這個技能性價比很高。

方案3是針對這個場景的最優方案。當然調試工具的熟悉也需要一些成本,能提高調試效率也是真的,然而這對於在其它場景下避免重複並無用處。所以雖然它是這個場景下的最優方案,但並非我的首選。

所以說,之所以大家要強調 「要通過元編程解決問題,而非通過編輯器/IDE解決問題」 ,原因就在這裡。


UltiSnips 插件

加個補全, 搞定


謝邀。

我能想到的話,可以寫個函數

function! ExpandPrint()
let a = input("a = ")
return "print "" . a . "=%s" % " . a
endfunction

然後定一個快捷鍵,比如

inoremap & &=ExpandPrint()&

然後在 insert 模式下按 &,然後輸入你要替換的那個 a,回車就行了。


推薦使用UltiSnip,定義一個模板展開就行了


用個宏啊,print "a ...." , 然後0, fa, r


在vimrc中寫一個函數,綁定一個快捷鍵就可以了啊


謝邀。 @寶紀

竊以為如果要用vim就別偷懶別閑麻煩,而且鄙人也不喜給vim上插件,閑麻煩就上IDE吧,折衷一點就用sublime吧,我就純粹只拿它當編輯器使 :)

希望對你有幫助:)


https://github.com/Shougo/neosnippet.vim


樓主寫的是python吧

當你不停重複print寫法時

要考慮寫log了

再說了yy wdw幾個鍵也不難按

大不了錄個宏


感覺問題沒描述清楚。

最笨的辦法就是最好的辦法。

你不如把這條語句保存在一個文件裡面


推薦閱讀:

bin文件怎麼打開?
vim配置ycm,同時支持python和python3了,如何只支持python3?
如何配置vimrc支持普通編輯器的操作?
vim 末尾會自動添加

用vim被人說裝逼,怎麼辦?

TAG:Vim | Vim插件 | vim代碼補全 | vim腳本 |