Vim için bir dizi Tex eklentisi var ( vim-latex , bir çift söylemek için AutomaticLatexPlugin ).
TeX eklentileri arasında sağlanan işlevsellikler arasındaki farklar nelerdir (adlandırdıklarım ve muhtemelen diğerleri)?
İşte SO ile ilgili birkaç soru:
Vim için bir dizi Tex eklentisi var ( vim-latex , bir çift söylemek için AutomaticLatexPlugin ).
TeX eklentileri arasında sağlanan işlevsellikler arasındaki farklar nelerdir (adlandırdıklarım ve muhtemelen diğerleri)?
İşte SO ile ilgili birkaç soru:
Yanıtlar:
Farklı eklentilerle sınırlı bir deneyime sahip olduğum için derinlemesine bir karşılaştırma sunmayacağım. Birkaç eklentiyi iyi tanırım ( LaTeX-Box ve LaTeX-Suite ) ve bir eklentiyi çok iyi biliyorum çünkü kendim geliştiriyorum: vimtex . Böylece, çoğunlukla vimtex hakkında yazacağım. Ancak, ilk önce başkaları için ilgi çekici olabilecek bazı referansları işaret edeceğim.
Vardır sürü Vim için eklentileri. Bunlar en azından yarı popüler olarak tanıdıklarım:
On tex.stackexchange.com , bir orada büyük liste LaTeX editörler ve IDE. Genel olarak güzel bir genel bakış sağlar, ancak Vim için eklentilere genel bir bakış sağlar:
vimtex LaTeX-Box'a dayanır. Bir süredir hata düzeltmeleri ve LaTeX-Box güncellemelerine katkıda bulunduktan sonra başladı. Eğer sıfırdan yazarsam, eklentinin çok daha modern bir şekilde yazılabileceğini fark ettim. İlk önce birçok özelliği çıkardım ve daha sağlam ve modüler bir "motor" yaptım. Daha sonra özellikler ekledim ve bugün LaTeX-Box'ın özelliklerinin çoğuna ve sonra bazılarına sahip olduğunu düşünüyorum.
Özelliklerin tam bir listesini vermek yerine ( bunun için buraya bakınız ), vimtex ve diğer eklentiler arasındaki farkların bir kısmını işaret etmeye çalışacağım. Ancak, bazı cesur iddialarda bulunmak istiyorum:
Vimtex LaTeX-Box'a dayandığından, kesinlikle benzer prensiplere sahiptir. Fikir, işleri basit tutmak ve sorunları çözmek için, daha iyi, diğer eklentiler tarafından çözülmedi. LaTeX belgelerini derlemek için lateks kullanır ve sözdizimi vurgulaması için dahili Vim eklentisini kullanır.
LaTeX-Box'ta vimtex'te eksik olan bir önemli özellik var: Geri arama ile tek çekimli derleme . Bu özelliğin vimtex'te bulunmamasının nedeni, karmaşık olması ve kendi tercihlerime göre yeterince basit bir uygulama bulamamış olmamamdır (öneriler açıktır, lütfen sorunları açmak veya istekleri almaktan çekinmeyin) ).
Vimtex ve LaTeX-Suite arasındaki temel fark, muhtemelen vimtex'in Vim'de LaTeX için tam teşekküllü bir IDE uygulamaya çalışmadığıdır. Örneğin:
latexmk, derleme hataları hakkında anında geri bildirim almak için geri çağırma özelliğine sahip derleme için kullanılırKarşılaştırma yapamam, çünkü Vim-LaTeX kullandığım tek LaTeX eklentisi. Neredeyse bir yıldır Vim-LaTeX kullanıyorum. Bu yüzden sadece Vim-LaTeX hakkında konuşacağım.
Orada birçok Vim-LaTeX mevcut özellikler. Hepsini hatırlamıyorum. Sadece sürekli bildiğim ve kullandığım özelliklerden bahsedeceğim.
Not: Bunlar sınırlı kullanıcı deneyimimdir ve bu çok yanıltıcı olabilir . Ben tecrübeli bir Vim kullanıcısı değilim. Ve vimscript hakkında hiçbir şey bilmiyorum.
<C-j>AtlamaIMAP()fonksiyonu ve <C-j>jumpping fonksiyonları bir eklentisi olarak ayrıca temin edilmektedir imaps.vimVim-Lateks paket. Bunlar güçlü özelliklerdir ve LaTeX yazmıyor olsanız bile çok faydalı olabilirler.
IMAP()işlev, ekleme modu eşlemeleri yapmak ve yerleşik imapve iabbrevIMO'dan genel olarak ayarlanması için daha doğal bir yol sağlar .
<C-j>atlama, birçok Vim-LaTeX tamamlama özelliği tarafından kullanılır. Bir atlama noktası ile gösterilir <++>.
Yerleşik ekleme modu tuşu eşlemeleri IMAP()aramalar olarak uygulanır . Örneğin, uzun bir yararlı IMAP()arama listesini main.vimdosyada bulabilirsiniz:
call IMAP ('__', '_{<++>}<++>', "tex")
call IMAP ('()', '(<++>)<++>', "tex")
call IMAP ('[]', '[<++>]<++>', "tex")
call IMAP ('{}', '{<++>}<++>', "tex")
...
call IMAP ('((', '\left( <++> \right)<++>', "tex")
call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
...
Ardından, şunu yazdığınızda (), imleç parantez arasında otomatik olarak yer değiştirecek ve ilkini değiştirecektir <++>. İçine yazmayı tamamladıktan sonra, tekmeleyip <C-j>vurursun, imleç parantezden dışarı çıkar ve yazmaya devam edersin. Bir kere alıştıysanız, bağımlılık yaratan bir yazma akışı oluşturmaya başlar ...
Yukarıda gördüğünüz bir \left \rightçift, açma dirseğinin iki vuruşuyla kolayca yazılabilir. Ve <C-j>jumpping yazarak akış yapar.
Bir büyük aksaklık IMAP()ve <C-j>bir şey olduğunu onlar son değişiklik geçmişini karıştıran biridir . (Uzun süredir düzeltmek istediğim bir hata.) Bu nedenle, ."sözde son değişiklik" iniz bu işlev çağrıları içeriyorsa , son değişikliklerinizi yinelemeye çalışırken beklenmeyen davranışlarla karşılaşabilirsiniz .
IMAP()Basit anahtar eşlemelerden daha karmaşık şablonlara kadar her türlü eşlemeyi yapabilirsiniz . Haritalarımın ( ftplugin/tex.vim) bazı örnekleri :
call IMAP('*EEQ',"\\begin{equation*}\<CR><++>\<CR>\\end{equation*}<++>",'tex')
call IMAP('DEF',"\\begin{definition}[<++>]\<CR><++>\<CR>\\end{definition}<++>",'tex')
call IMAP('BIC','\binom{<++>}{<++>}<++>','tex')
call IMAP('PVERB','\PVerb{<++>}<++>','tex')
call IMAP('VERB','\verb|<++>|<++>','tex')
imaps.vimEklenti ile ilgili ilginç bir gerçek , LaTeX'in ötesinde potansiyel kullanımı anlamına gelen küresel bir eklenti olmasıdır. Aslında, C kod kod şablonları oluşturmak için kullanıyorum <++>ve <C-j>jumppings (diğer eklentileri ile birleştirerek).
<F5> <F7> Komutların ve Ortamların EklenmesiBunun bir dezavantajı IMAP(), tuş kombinasyonunun artık normal metinde kullanılamamasıdır (eşlemeyi geri almadığınız sürece u). Durumlarda sadece istediğiniz tetiklemek istediğiniz gibi eşleme <F5>ve <F7>kullanışlı. Bu iki tuş , sırasıyla ortamları ve satır içi komutları yerleştirmeyi tetiklemek için kullanılır . Ve kullanıcının modunu ve özelleştirmelerini temel alarak farklı davranırlar.
Ekle / Normal Mod'da, imleç bir kelime eklerken veya kelime içindeyken, tuşuna basmak <F5>varsayılan olarak formun temel bir ortamını ekleyecektir.
\begin{word}
<Cursor>
\end{word}<++>
kelimeye göre; tuşuna basarak <F7>varsayılan \word{}<++>olarak kelimeye göre formun basit bir satır içi komutunu ekleyiniz .
"Varsayılan olarak", <F5>/ tarafından tetiklendiğinde belirli bir kelimenin davranışını özelleştirebileceğiniz anlamına gelir <F7>. İşte ayarlarımdan bazıları ( .vimrc):
let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
let g:Tex_Com_latex = "{\\LaTeX}<++>"
let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
İmleç edilir Ekle / Normal Mod, içinde değil (aka şey takılı yalnız ), pres <F5>/ <F7>ekleme çevre / komutu seçmek için bir menü size isteyecektir. Veya en alttaki istediğiniz ortam / komutun adını yazabilirsiniz. Şahsen, nadiren kullanırım <F5>/ <F7>bu şekilde.
Görsel olarak bir metin parçasını seçtikten sonra <F5>/ tuşuna basıldığında <F7>, metin sarma için bir menü görüntülenir . Ardından seçilen metin seçtiğiniz veya yazdığınız ortama / komuta sarılır.
Insert / Normal Mode'da, imleç bir ortam / komutun kapsamı içindeyken, tuşuna basın <Shift>+<F5>/<F7>, ortam / komutun değiştirilmesi için bir menü soracaktır .
`aiçin `zve karşılık gelen harfler.`8için \infty, `<için \le, `Iiçin \int_{<++>}^{<++>}<++>, vs."İki kez basmak bir çift TeX çift tırnak alır. Yani edebi "karakter yazmak için kullanmanız gerekir.\itemetiketi ekleyecektir .\left \righttarafından çifti `(, `[ve `{.Tex_FoldedSections, Tex_FoldedMisc, ve Tex_FoldedEnvironments.Bazen yerleşik eşlemeler çok fazla ileri gitti veya istediğinizi bırakmıyor. Yerleşik eşlemeleri, içinde yeniden tanımlayarak geçersiz kılabilirsiniz after/ftplugin/tex.vim:
call IMAP('`|','\abs{<++>}<++>','tex')
call IMAP('ETE',"\\begin{table}\<CR>\\centering\<CR>\\caption{<+Caption text+>}\<CR>\\label{tab:<+label+>}\<CR>\\begin{tabular}{<+dimensions+>}\<CR><++>\<CR>\\end{tabular}\<CR>\\end{table}<++>",'tex')
call IMAP('==','==','tex')
call IMAP('`\','`\','tex')
Her zaman motor pdflatexile xelatexmotor arasında geçiş yapmam gerekiyor . Böylece, benim içinde aşağıdaki satırları var .vimrc:
"switch to pdflatex
function SetpdfLaTeX()
let g:Tex_CompileRule_pdf = 'pdflatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lp :<C-U>call SetpdfLaTeX()<CR>
"switch to xelatex
function SetXeLaTeX()
let g:Tex_CompileRule_pdf = 'xelatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lx :<C-U>call SetXeLaTeX()<CR>
Bu dağınık ve karmaşık bir konudur. Belirli PDF görüntüleyicileri ve belirli bir miktardaki şansları ile çok kolay olabilir. Ama bu esas olarak google arama meselesi.
Genel olarak, canavarı evcilleştirmek için zaman ayırmaya istekli olmanız durumunda işe yarayacağını düşünüyorum. Söylendiği gibi, zamanım ve yeterli bilgim olsaydı, genel gider özelliklerini kesinlikle gözden geçireceğim ve diğer eklentilerle entegrasyon potansiyellerini keşfedeceğim.
vimtexyan yana çalışabilirLatex-Suite, bu da iki eklentiden aynı anda en iyi sonucu alabileceğiniz anlamına gelir . :)