LaTeX + Vim, Tại sao không ?
TIL
719
White

Quân Vũ viết ngày 29/08/2018

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 !!!

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quân Vũ

4 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
4 0
Vì đâu mà có CAN (Controller Area Network) ? Thời cuộc lúc bấy giờ Từ thuở khai thiên lập xe, khi mà các thiết bị điện tử còn xa xỉ và được sử d...
Quân Vũ viết 1 năm trước
4 0
White
2 0
Trong phần 2 này mình sẽ giới thiệu về cách thức mà CAN hoạt động, khung truyền dữ liệu, cấu tạo phần cứng, ... để hiểu. Biết đâu sa cơ lỡ vận thì ...
Quân Vũ viết 1 năm trước
2 0
Bài viết liên quan
White
0 4
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết hơn 1 năm trước
0 4
White
2 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết 8 tháng trước
2 0
White
22 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 3 năm trước
22 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!