[英]emacs + latex + yasnippet: Why are newlines inserted after a snippet?
每次我在.tex文檔中插入一個片段(帶yasnippet)時,我會在片段后面獲得一個換行符。 這對於通常用於文本樣式的小片段來說非常煩人。 我怎么能避免這種情況?
我讀了一下這個問題(http://code.google.com/p/yasnippet/issues/detail?id=115或http://yasnippet.googlecode.com/svn/trunk/doc/faq.html )但無法找到解決方案。 重現如下(我使用yasnippet版本0.6.1c在Mac OS X 10.6.8上使用Aquamacs 2.3a):
定義〜/ Library / Preferences / Aquamacs Emacs / Preferences.el為:( require'yasnippet)(yas / initialize)(yas / load-directory“〜/ Library / Preferences / Aquamacs Emacs / plugins / yasnippet-0.6.1c /片段“)
定義以下片段(稱之為“bm.yasnippet”[bm = boldmath];星號*表示光標結束的位置 - 請注意片段后面沒有換行符)
# name: \\bm{}{} # key: bm # -- \\bm{$1}*
重新啟動Aquamacs並打開一個.tex文件並輸入bm + Tab [這應該插入代碼片段]
在代碼段之后添加換行符。 這是非常不方便的,因為\\bm{foo}
通常用於文本樣式,因此例如在“vector \\bm{x}
不是空向量”中。 一個典型的原因是片段以換行符結束,然后插入換行符。 不過,我專門獲得這種行為甚至片斷不以新行結束。
我不能用普通的Emacs來重復它。 事實上,我有這個確切的問題,但我的問題是我將require-final-newline
設置為t 。 所以Emacs在我的模板末尾添加了換行符。
我的設置稍微復雜一點,但解決方案可能是將mode-require-final-newline
為nil並重啟Emacs。
要驗證這是問題,請打開模板並檢查最終換行符。
感謝Temporarly中的答案禁用在Emacs中添加換行符 ,我使用的函數只是暫時禁用在當前緩沖區中添加最終換行符:
(defun disable-final-newline ()
(interactive)
(set (make-local-variable 'require-final-newline) nil))
你有一個新行的原因是你的代碼片段末尾有空格或制表符。 按Ctrl + e和Ctrl + k來殺死它們會使它工作,將近1個小時來弄明白......
我有幾個片段的類似問題,其中一個是我經常使用的\\ frac {} {}。 我使用的frac片段版本不是與yasnippets捆綁在一起的版本。
問題是我在VIM中編輯了一些片段,當您保存文件時,VIM會自動為其添加換行符。 要解決它,我不得不在另一個編輯器中刪除換行符,例如emacs。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.