我想在打開新文件(一個不存在的空文件)時自動設置paste
模式。VIM:在enew上執行自動命令
autocmd BufNewFile * :set paste
中的vimrc
確實有vim newfile
或:e newfile
的伎倆,但與:enew
。
如何在:enew
上運行自動命令?
我想在打開新文件(一個不存在的空文件)時自動設置paste
模式。VIM:在enew上執行自動命令
autocmd BufNewFile * :set paste
中的vimrc
確實有vim newfile
或:e newfile
的伎倆,但與:enew
。
如何在:enew
上運行自動命令?
set paste
將會有許多副作用,例如,禁用縮進。我會想象所要求的行爲會很快變得煩人。
替代方案:
'pastetoggle'
設置設置一鍵切換'paste'
,yo
的映射,使Vim處於插入模式'paste'
集和禁用'paste'
在離開插入模式如需更多幫助,請參見:
:h 'paste'
:h 'pastetoggle'
我很高興當我完成粘貼時關閉'粘貼'(或者在極少數情況下我會寫一個文件從頭開始),但我仍然希望它是空緩衝區的默認值,因爲我很少從頭開始編寫一個文件,並且通常打開一個新緩衝區只是爲了對我的某些內容進行快速編輯剪貼板,但我會看看這些插件,謝謝:) –
要回答這個問題,下面就對:enew
運行自動命令:
autocmd BufCreate * if '' == expand("<afile>") | set paste | endif
你可以用BufAdd
或BufNew
更換BufCreate
,它會工作都一樣。重要的部分是if '' == expand("<afile>")
,如果新緩衝區沒有名稱,它將只執行該命令。
NB:
粘貼文本在新的緩衝區的具體使用情況,自動切換到paste
模式是不是一個很好的解決方案,雖然,我不建議使用此。
由於paste
即使在切換緩衝區時也會保留。當您切換緩衝區/窗口時,您需要額外的自動命令來取消設置paste
模式(autocmd WinEnter * set nopaste
可用於Windows,但由於某些原因,autocmd BufEnter * set nopaste
在切換緩衝區時不起作用)。
爲了緩解在新的緩衝區(或其他方式)粘貼的東西,我建議你可以:
"*p
或"+p
,如使用vim的原生機制來從剪貼板寄存器粘貼,如通過@dartNNN建議(假設你是在本地機器上)
你可以用'BufCreate',而不是試着去'BufNewfile'應該被觸發每次你加載一個fi沒有列出的文件。 – statox
只是問。 「粘貼」模式有用嗎?我總是使用+(加號)寄存器,這是指系統剪貼板。 – dartNNN
@statox:感謝但不幸的是,當我打開現有文件時,'BufCreate'也會設置粘貼模式。 –