Saya tidak bisa melakukan perbandingan, karena Vim-LaTeX adalah satu-satunya plugin LaTeX yang saya gunakan. Saya telah menggunakan Vim-LaTeX selama hampir setahun. Jadi saya akan berbicara tentang Vim-LaTeX sendirian.
Ada banyak fitur yang hadir di Vim-LaTeX. Saya tidak ingat semuanya. Saya hanya akan berbicara tentang fitur yang saya tahu dan gunakan terus-menerus.
Catatan: Ini adalah pengalaman pengguna saya yang terbatas , yang mungkin sangat menyesatkan . Saya bukan pengguna Vim berpengalaman. Dan saya tidak tahu apa-apa tentang vimscript.
IMAP () dan <C-j>
Jumpping
IMAP()
fungsi dan fungsi <C-j>
lompatan disediakan secara terpisah sebagai plugin imaps.vim
dalam bundel Vim-LaTeX. Mereka adalah fitur yang kuat dan bisa sangat berguna bahkan ketika Anda tidak sedang menulis LaTeX.
IMAP()
fungsi menyediakan cara yang lebih alami untuk melakukan insert modus pemetaan dan template secara umum dari built-in imap
dan iabbrev
, IMO.
<C-j>
jumpping digunakan oleh banyak fitur penyelesaian Vim-LaTeX. Titik lompatan ditunjukkan oleh <++>
.
Pemetaan tombol mode bawaan diimplementasikan sebagai IMAP()
panggilan. Misalnya, Anda dapat menemukan daftar panjang IMAP()
panggilan berguna dalam main.vim
file:
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")
...
Kemudian ketika Anda mengetik mengatakan ()
, kursor akan berada secara otomatis di antara tanda kurung, menggantikan yang pertama <++>
. Setelah Anda selesai mengetik di dalam, Anda menendang <C-j>
dan memukul , kursor akan keluar dari tanda kurung dan Anda terus mengetik ke depan. Setelah Anda terbiasa, itu mulai membentuk aliran pengetikan yang agak membuat ketagihan ...
Anda lihat dari atas \left
\right
sepasang dapat diketik dengan mudah dengan double stroke dari braket pembuka. Dan <C-j>
melompat membuat aliran pengetikan.
Satu kesalahan besar IMAP()
dan <C-j>
hal adalah mereka mengacaukan riwayat perubahan terakhir Anda . (Satu bug yang ingin saya perbaiki untuk waktu yang lama.) Oleh karena itu, Anda mungkin menemukan perilaku yang tidak terduga ketika mencoba mengulang perubahan terakhir Anda dengan .
jika "perubahan terakhir yang seharusnya" Anda berisi panggilan fungsi ini.
Anda dapat melakukan semua jenis pemetaan menggunakan IMAP()
, dari pemetaan kunci sederhana hingga templating yang lebih kompleks. Berikut adalah beberapa contoh pemetaan saya ( ftplugin/tex.vim
):
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')
Fakta menarik tentang imaps.vim
plugin adalah plugin global, yang menyiratkan potensi penggunaannya di luar LaTeX. Memang, saya menggunakan <++>
dan <C-j>
melompat - lompat (menggabungkan dengan plugins lain) untuk membangun template potongan kode di C.
<F5> <F7>
Penyisipan Perintah dan Lingkungan
Salah satu kelemahannya IMAP()
adalah bahwa kombinasi tombol tidak dapat digunakan dalam teks normal lagi (kecuali jika Anda membatalkan pemetaan dengan u
). Dalam hal Anda hanya ingin memicu pemetaan seperti yang Anda inginkan, <F5>
dan <F7>
berguna. Kedua kunci ini digunakan untuk masing-masing lingkungan pemicu dan penyisipan perintah inline. Dan mereka berperilaku berbeda berdasarkan mode dan kustomisasi dari pengguna.
Dalam Mode Sisipkan / Normal, ketika kursor melampirkan kata atau di dalam kata, secara otomatis menekan <F5>
akan memasukkan lingkungan dasar formulir
\begin{word}
<Cursor>
\end{word}<++>
berdasarkan kata; Menekan <F7>
akan secara default menyisipkan perintah inline dasar formulir \word{}<++>
berdasarkan kata.
"Secara default", maksud saya Anda dapat menyesuaikan perilaku kata tertentu saat dipicu oleh <F5>
/ <F7>
. Berikut adalah beberapa pengaturan saya ( .vimrc
):
let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
let g:Tex_Com_latex = "{\\LaTeX}<++>"
let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
Dalam Mode Sisipkan / Normal, ketika kursor tidak terpasang pada apa pun (alias sendirian ), menekan <F5>
/ <F7>
akan meminta Anda menu untuk memilih lingkungan / perintah untuk dimasukkan. Atau Anda dapat mengetik nama lingkungan / perintah yang diinginkan di bagian bawah. Secara pribadi, saya jarang menggunakan <F5>
/ <F7>
dengan cara ini.
Tekan <F5>
/ <F7>
setelah secara visual memilih sepotong teks akan meminta menu untuk membungkus teks . Kemudian teks yang dipilih akan dibungkus dengan lingkungan / perintah yang Anda pilih atau ketikkan.
Dalam Mode Sisipkan / Normal, ketika kursor berada dalam lingkup lingkungan / perintah, tekan <Shift>+<F5>/<F7>
akan meminta menu untuk mengubah lingkungan / perintah .
Pemetaan Kunci Misc
- Surat-surat Yunani.
`a
ke `z
dan ibukota yang sesuai.
- Simbol seperti
`8
untuk \infty
, `<
untuk \le
, `I
untuk \int_{<++>}^{<++>}<++>
, dll.
- Menekan
"
dua kali mendapat sepasang tanda kutip ganda TeX. Jadi untuk mengetik "
karakter literal , Anda harus menggunakan.
- Menekan di beberapa lingkungan enumerasi akan menyisipkan
\item
tag yang sesuai .
- Anda dapat membungkus bagian matematika yang dipilih secara
\left
\right
berpasangan dengan `(
, `[
dan `{
.
- Lipat bisa disesuaikan. Tiga variabel global kontrol apa yang bisa dilipat:
Tex_FoldedSections
, Tex_FoldedMisc
, dan Tex_FoldedEnvironments
.
Terkadang pemetaan bawaan baru saja berjalan terlalu jauh atau tidak berhenti seperti yang Anda inginkan. Anda dapat mengesampingkan pemetaan bawaan dengan mendefinisikannya kembali di 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')
Atur Multiple Compilation Engine
Saya selalu perlu beralih antara pdflatex
dan xelatex
mesin. Jadi, saya memiliki baris berikut di .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>
Lihat PDF, Maju dan Mundur Cari antara Vim dan PDF viewer
Ini adalah topik yang berantakan dan rumit. Dengan penampil PDF tertentu dan sedikit keberuntungan , itu bisa sangat mudah. Tapi ini terutama masalah pencarian google.
Saran
- Anda harus menemukan saldo Anda antara cara LaTeX dan cara Vim-LaTeX.
- Vim-LaTeX sama sekali tidak ringan. Ada beberapa fitur dan / atau pemetaan kunci yang mungkin tidak akan pernah Anda gunakan dan Anda harus menimpanya secara manual.
- Anda menggunakan Vim. Anda tahu apa artinya kesabaran . :-)
Secara keseluruhan, saya pikir ini akan bekerja dengan baik jika Anda bersedia meluangkan waktu untuk menjinakkan binatang buas. Yang sedang berkata, seandainya saya punya waktu dan pengetahuan yang memadai, saya pasti akan menipiskan fitur-fitur overhead dan mengeksplorasi potensi integrasi dengan plugin lain.
Referensi
vimtex
dapat bekerja berdampinganLatex-Suite
, yang berarti Anda bisa mendapatkan yang terbaik dari dua plugin sekaligus . :)