Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
LaTeX + Vim, Tại sao không ?
Sự kết hợp hoàn hảo!
Hẳn là nhiều bạn đã biết LaTeX và Vim là gì rồi nên mình không đề cập đến nó nữa. Trong bài viết này mình chia sẻ cách để viết LaTeX trên Vim nhanh và có thể tùy chỉnh theo ý bản thân.
Hiện nay có khá nhiều phần mềm viết LaTeX như là TexMaker, TexNic Center, TexWorks, .... hỗ trợ rất tốt viết LaTeX từ autocomplete cho đến giao diện bắt mắt, dùng như word vậy. Tuy nhiên cũng có một số người trong đó có mình thích sử dụng Vim cho mọi thứ và LaTeX không phải là ngoại lệ. Chỉ cần MikTek + Vim là cân tất. Mình sử dụng sumatrapdf để mở file pdf cho nhanh, gọn.
Làm gì trên Vim
Đầu tiên bạn cần phải kiểm tra rằng file vimrc của bạn ở đâu, vì trong bài viết này chúng ta sẽ viết command trong vimrc để chỉnh sửa theo ý bản thân.
Đối với ai chưa biết, thì bạn chỉ việc vào vim rồi gõ :version
là nó sẽ hiện lên đường dẫn đến vimrc. Rồi sau đó chúng ta tiến hành chỉnh sửa nó.
Đa số khi chúng ta tạo một file .tex bằng vim thì nó sẽ hiểu đó là file plaintex vì vậy trong vimrc chúng ta cần thêm lệnh let g:tex_flavor = "latex"
thì nó sẽ hiểu là kiểu tex
Hãy chắc chắn rằng bạn đã add path của miktek vào biến PATH, sau đó trong file vimrc bạn viết lệnh sau: autocmd FileType tex inoremap <F5> <Esc>:!pdflatex<space><c-r>%<Enter><Esc>
lệnh này có nghĩa là đối với loại file là tex thì nếu ở chế độ insert của vim thì bạn nhấn F5 nó sẽ tiến hành biên dịch file .tex bạn đang viết.
Còn nếu bạn muốn F5 có cả hiệu lực trong chế độ normal thì viết như sau:
autocmd FileType tex nnoremap <F5> :!pdflatex<space><c-r>%<Enter><Esc>
Vậy là bạn có thể biên dịch file tex ngay cả trong vim chỉ bằng việc nhấn nút F5.
Tạo autocomplete cho LaTeX trong vimrc
Trước tiên tạo autocomplete các command cho LaTeX chúng ta cần viết lệnh sau để khi đang viết trong vim chúng ta có thể nhảy tới <++> trong bài viết. Đọc tới phần dưới thì bạn sẽ hiểu cái <++> dùng để làm gì !
Thêm lệnh autocmd FileType tex inoremap <c-j> <Esc>/<++><Enter>c4l
lệnh này có tác dụng là khi bạn nhấn tổ hợp Ctrl + J thì nó sẽ nhảy tới <++> và xóa chúng đi. Mục đích của việc này là để bạn có thể nhảy tới những chỗ có <++> mà không cần điều hướng cursor. Cụ thể là nhảy ra khỏi environment trong LaTeX cũng như chỗ mà chúng ta muốn ghi.
Một vài ví dụ tạo autocomplete
Sau đây là lệnh \documentclass[options]{type}
được viết trong vimrc như sau:
autocmd FileType tex inoremap \do \documentclass[]{<++>}<Enter><++><Esc>kf]i
Khi bạn đang ở chế độ insert của Vim và đánh nhanh \do thì nó sẽ ngay lập tức thay thế bằng dòng
\documentclass[]{<++>}
<++>
Và khi đó con trỏ của bạn ngay ngoặc vuông và bạn có thể điền options ngay vào nó. Sau khi bạn ghi xong, bạn muốn nhảy sang ngoặc nhọn để ghi loại tài liệu, thì thay vì phải điều hướng con trỏ sang phải thì bạn chỉ việc nhấn Ctrl + J thì nó sẽ nhảy sang ngoặc nhọn và bạn lại ghi tiếp loại tài liệu. Và sau khi ghi xong bạn lại Ctrl + J để nhảy xuống hàng dưới. Thật là tiện lợi phải không ?
Bạn hoàn toàn có thể tự viết cho mình những autocomplete như vậy, sau đây là một số ví dụ mình viết, rồi sau đó các bạn hãy tự phát triển cho bản thân để sao cho thuận tay khi gõ nhất.
autocmd FileType tex inoremap \bd \begin{document}<Enter><Enter><Enter><Enter>\end{document}<Esc>2ki
Hiển thị trên Vim khi gõ \bd
là như sau:
\begin{document}
"cursor here
\end{document}
Hoặc là lệnh viết chữ nghiêng trong latex:
autocmd FileType tex \it \textit{}<++>
=> Hiển thị trên Vim khi gõ \it như sau:
\textit{"cursor here}<++>
Sau khi gõ xong thì bạn Ctrl + J là thoát ra khỏi và lại viết tiếp. Hãy tự xây dựng cho mình các lệnh viết nhanh để gõ nhanh trên Vim. Chúc các bạn thành công !!!






