Vim (trình soạn thảo)

Bách khoa toàn thư mở Wikipedia
Vim
Thiết kế bởiBram Moolenaar
Phát hành lần đầu2 tháng 11 năm 1991
(32 năm trước)
 (1991-11-02)[1]
Kho mã nguồn
Viết bằngC, Vim script
Hệ điều hànhUnix, Linux, Windows NT, macOS, iOS, Android, AmigaOS, MorphOS
Ngôn ngữ có sẵnTiếng Anh, Chinese, French, German, Italian, Persian, Polish, Russian, Spanish[2]
Thể loạiTrình soạn thảo văn bản
Giấy phépVim[3][4][5]
WebsiteWebsite chính thức Sửa đổi này tại Wikidata

Vim (/vɪm/;[6] viết tắt của Vi IMproved) là một trình soạn thảo văn bản miễn phímã nguồn mở. Đó là một bản sao cải tiến của vi của Bill Joy cho Unix. Nó được viết bởi Bram Moolenaar dựa trên mã nguồn của một port của Stevie editor lên Amiga và phát hành lần đầu vào năm 1991. Vim được thiết kế cho cả trong giao diện dòng lệnh và và như một ứng dụng độc lập trong giao diện người dùng đồ họa. Vim là một phần mềm tự do nguồn mở và được phát hành theo giấy phép bao gồm một số điều khoản từ thiện, khuyến khích người dùng yêu thích phần mềm xem xét ủng hộ cho trẻ em Uganda.[7] Giấy phép bao gồm GNU General Public License thông qua một điều khoản đặc biệt cho phép phân phối các bản sao sửa đổi "theo GNU GPL v2 hoặc bất kỳ phiên bản nào sau này".[8]

Mặc dù ban đầu nó được phát hành cho Amiga, Vim từ đó đã được phát triển thành đa nền tảng, hỗ trợ nhiều nền tảng khác. Năm 2003, nó được bình chọn là trình soạn thảo phỏ biến nhất theo độc giả của Linux Journal;[9] năm 2015 một khảo sát trên Stack Overflow cho thấy nó là trình soạn thảo phổ biến thứ ba,[10] và môi trường phát triển phổ biến thứ năm trong năm 2018.[11]

Lịch sử[sửa | sửa mã nguồn]

Bram Moolenaar bắt đầu làm việc trên Vim cho máy tính Amiga năm 1988. Moolenaar lần đầu tiên phát hành công khai Vim (v1.14) năm 1991.[12] Vim dựa trên một trình soạn thảo trước đó, Stevie, cho Atari ST,[1] tạo bởi Tim Thompson, Tony Andrews, và G.R. (Fred) Walter.[13][14]Bản mẫu:Discuss

Tên "Vim" là ghép chữ của "Vi IMproved"[15] bởi vì Vim là một phiên bản mở rộng của trình soạn thảo vi, với nhiều tính năng bổ sung được thiết kế hữu ích trong việc chỉnh sửa mã nguồn của chương trình. Ban đầu, từ viết tắt của "Vi IMitation", nhưng nó đã được thay đổi với bản phát hành Vim 2.0 tháng 12/1993.[16] Một bình luận sau đó nói rằng lý do thay đổi tên là tính năng của Vim vượt trội hơn so với vi.

Lịch sử phát hành
Ngày Phiên bản Thay đổi bổ sung
6/1987 N/A Tim Thompson phát hành Stevie (ST cho những người đam mê VI), một bản sao giưới hạn của vi cho Atari ST, đăng nguồn lên Usenet.[17][18]
6/1988 N/A Tony Andrews cải thiện Stevie, và port nó sang UnixOS/2, phát hành phiên bản 3.10 trên Usenet.[17][19]
1988 1.0 Bram Moolenaar tạo Vi IMitation cho Amiga, dựa trên Stevie, không phát hành công khai
1.14[20] Phát hành công khai lần đầu cho Amiga trên đĩa Fred Fish #591[21]
1992 1.22[20] Port sang Unix. Vim bây giờ cạnh tranh với vi.
14/12/1993 2.0[16] Đây là bản phát hành đầu tiên sử dụng tên Vi IMproved.
12/8/1994 3.0[20] Hỗ trợ nhiều cửa sổ
29/5/1996 4.0[20][22] Giao diện đồ họa
19/2/1998 5.0[20][23] Syntax highlighting, scripting cơ bản (các hàm, lệnh do người dùng định nghĩa, v.v.)
6/4/1998 5.1 Sửa lỗi, các cải tiến khác
27/4/1998 5.2 Hỗ trợ dòng dài, trình duyệt file, hộp thoại, menu bật lên, chế độ chọn, tệp phiên, hàm và lệnh do người dùng xác định, giao diện Tcl...
31/8/1998 5.3 Sửa lỗi
25/7/1999 5.4 Mã hóa tệp cơ bản, các cải tiến khác
19/9/1999 5.5 Sửa lỗi, các cải tiến khác
16/1/2000 5.6 File cú pháp mới, sửa lỗi, vv
24/6/2000 5.7 File cú pháp mới, sửa lỗi, vv
31/5/2001 5.8 File cú pháp mới, sửa lỗi, vv
26/9/2001 6.0[20][24] Folding, plugins, đa ngôn ngữ, etc.
24/3/2002 6.1 Sửa lỗi
1/6/2003 6.2 GTK2, hỗ trợ tiếng Arab, lệnh:try, minor features, sửa lỗi
7/6/2004 6,3 Sửa lỗi, cập nhật bản dịch, cải tiến đánh dấu
15/10/2005 6.4 Sửa lỗi cập nhật cho Perl, Python, và hỗ trợ Ruby
7/5/2006 7.0[25] Kiểm tra chính tả, tự động hoàn thành code, tab pages (multiple viewports/window layouts), highlighting dòng và cột hiện tại, undo branches...
12/5/2007 7.1 Sửa lỗi, cú pháp mới và tệp thời gian chạy, v.v.
9/8/2008 7.2[26] Hỗ trợ dấu chấm động trong các tập lệnh, mã vẽ màn hình được cấu trúc lại, sửa lỗi, tệp cú pháp mới, v.v.
15/8/2010 7.3 Hỗ trợ Lua, Python3, mã hóa Blowfish, undo/redo liên tục
10/8/2013 7.4[27] Một công cụ biểu thức chính quy mới, nhanh hơn.
12/9/2016 8.0[28] Hỗ trợ I/O không đồng bộ, công việc, lambdas, v.v.
18/5/2018 8.1[29] Hỗ trợ của sổ terminal và terminal gdb plugin.

Giao diện[sửa | sửa mã nguồn]

Graphical Vim (gVim) trên GTK+ 2.

Giống vi, giao diện của Vim không dựa trên các menu hay icon mà dựa trên các lệnh được đưa ra từ text user interface; Chế độ đồ họa của nó, gVim, bổ sung menu và thanh công cụ cho các lệnh thường dùng nhưng chức năng đầy đủ vẫn được thể hiện thông qua chế độ dòng lệnh của nó. Vi (và mở rộng bởi Vim) có xu hướng cho phép một người đánh máy để giữ ngón tay của họ trên hàng nhà, mà có thể là một lợi thế cho gõ lướt.[30]

Vim có một hướng dẫn cài sẵn cho người mới bắt đầu (có thể truy cập thông qua lệnh "vimtutor"). Ngoài ra còn có Vim Users' Manual có chi tiết các tính năng của Vim. Sách hướng dẫn này có thể được đọc từ bên trong Vim, hoặc tìm thấy trực tuyến

.[31][32]

Vim cũng có một cơ sở trợ giúp được tích hợp (dùng lệnh :help) cho phép người dùng truy vấn và điều hướng thông qua các lệnh và các tính năng.

Tùy chỉnh[sửa | sửa mã nguồn]

Một phần sức mạnh của Vim là nó có thể được tùy biến rộng rãi. Giao diện cơ bản có thể được kiểm soát bởi nhiều tùy chọn sẵn có và người dùng có thể xác định ánh xạ khóa được tùy chỉnh - thường được gọi là macro - hoặc viết tắt để tự động hóa tổ hợp phím phím hoặc thậm chí gọi hàm nội bộ hoặc do người dùng xác định.

Có nhiều plugins có sẵn sẽ mở rộng hoặc thêm chức năng mới cho Vim. Các kịch bản phức tạp này thường được viết bằng ngôn ngữ kịch bản nội bộ của Vim, vimscript (còn được biết là VimL).[33] cũng hỗ trợ việc sử dụng script Lua (như Vim 7.3), Perl, Python, Racket[34] (trước đâu là PLT Scheme), Ruby, và Tcl.

Vim script[sửa | sửa mã nguồn]

Vim script (cũng goi là vimscript hay VimL) là ngôn ngữ scripting tích hợp trong Vim.[35] Dựa trên ngôn ngữ trình soạn thảo ex của trình soạn thảo vi ban đầu, các phiên bản đầu tiên của Vim đã thêm các lệnh cho các luồng điều khiển và các định nghĩa hàm. Từ phiên bản 7, Vim script cũng hỗ trợ các kiểu dữ liệu nâng cao hơn như danh sách và từ điển và (một dạng đơn giản) lập trình hướng đối tượng. Các hàm dựng sẵn như map()filter() cho phép một dạng cơ bản của lập trình hàm, và Vim script có lambda từ phiên bản 8.0. Vim script chủ yếu được viết theo kiểu lập trình mệnh lệnh.

Vim macros có thể chứa một chuỗi các lệnh chế độ thông thường, nhưng cũng có thể gọi các lệnh hoặc các hàm cũ được viết bằng Vim script cho các tác vụ phức tạp hơn. Hầu như tất cả các phần mở rộng (được gọi là các plugin hoặc các script phổ biến) của core Vim được viết bằng Vim script, nhưng các plugin cũng có thể sử dụng các ngôn ngữ thông dịch khác như Perl, Python, Lua, hay Ruby (nếu hỗ trợ cho chúng được biên dịch vào nhị phân Vim).

Các file script Vim được lưu trữ ở định dạng ký tự thuần với phầm mở rộng là.vim. Có sẵn thư viện cho tập lệnh Vim trên www.vim.org như các plugin Vim.

Ví dụ[sửa | sửa mã nguồn]

" This is the Hello World program in Vim script.
echo "Hello, world!"

" This is a simple while loop in Vim script.
let i = 1
while i < 5
  echo "count is" i
  let i += 1
endwhile

Tính khả dụng[sửa | sửa mã nguồn]

Trong khi vi ban đầu chỉ có sẵn trên Unix, Vim được port sang nhiều hệ điều hành khác bao gồm AmigaOS (nền tảng mục tiêu ban đầu), Atari MiNT, BeOS, DOS, Windows bắt đầu từ Windows 95, OS/2, OS/390, MorphOS, OpenVMS, QNX, RISC OS, Linux, BSD, và Classic Mac OS.[36] Also, Vim is shipped with every copy of Apple macOS.[37]

Các port độc lập của Vim cũng có sẵn trên cảAndroid[38][39]iOS.[40]

Neovim[sửa | sửa mã nguồn]

Neovim

Neovim[41] là một phần mở rộng của Vim cố gắng cải thiện khả năng mở rộng và bảo trì của Vim.[42] Neovim có cùng cú pháp cấu hình với Vim; kết quả là, cùng file cấu hình có thể được sử dụng với cả hai trình soạn thảo.[43] Kể từ phiên bản 0.1, phát hành tháng 12/2005, Neovim tương thích với hầu hết tính năng của Vim.[44]

Dự án Neovim được khởi động năm 2014, với một số thành viên cộng đồng Vim cung cấp hỗ trợ sớm cho nỗ lực tái cấu trúc cấp cao để cung cấp kịch bản, plugin và tích hợp tốt hơn với GUI hiện đại.[45][46] Dự án là mã nguồn mở và toàn bộ code có sẵn trên Github.[47] NeoVim đã gây quỹ thành công vào ngày 23/3/2014,[48] hỗ trợ ít nhất một nhà phát triển toàn thời gian. Một số giao diện đang được phát triển, tận dụng khả năng của Neovim.[49][50]

Trình soạn thảo Neovim có sẵn trên PPA của Ubuntu,[51] và một vài dịch vụ quản lý gói khác,[52] khiến nó có thể cài đặt trên một loạt các hệ điều hành dựa trên Linux.

Xem thêm[sửa | sửa mã nguồn]

Chú thích[sửa | sửa mã nguồn]

  1. ^ a b “Two decades of productivity: Vim's 20th anniversary”.
  2. ^ “Vim in non-English languages”. Truy cập ngày 14 tháng 12 năm 2010.
  3. ^ “vim/LICENSE”. github.com. 20 tháng 10 năm 2021.
  4. ^ “Vim License”. spdx.org.
  5. ^ “Vim: uganda.txt”. vimhelp.org.
  6. ^ Vim documentation: intro: "Vim is pronounced as one word, like Jim, not vi-ai-em. It's written with a capital, since it's a name, again like Jim."
  7. ^ “Vim documentation: uganda”. vimdoc.sourceforge.net.
  8. ^ “Vim documentation: uganda”.
  9. ^ “Linux Journal: 2003 Readers' Choice Awards”. 1 tháng 11 năm 2003. Truy cập ngày 24 tháng 5 năm 2006.
  10. ^ “Stack Overflow Developer Survey 2015 § IV. Text Editor”. Stack Overflow. Truy cập ngày 25 tháng 7 năm 2016.
  11. ^ “Stack Overflow Developer Survey 2016 Results”. Stack Overflow § VII. Development Environments. Truy cập ngày 25 tháng 7 năm 2016.
  12. ^ “The continuing story of Vim” (PDF).
  13. ^ Vim (ngày 20 tháng 1 năm 2015). “intro.txt”. Vim Help (bằng tiếng Anh). Vim. Bản gốc lưu trữ ngày 9 tháng 7 năm 2016. Truy cập ngày 9 tháng 7 năm 2016.
  14. ^ “vim(1)”. die.net. Vim. ngày 11 tháng 4 năm 2006. Bản gốc lưu trữ ngày 9 tháng 7 năm 2016. Truy cập ngày 9 tháng 7 năm 2016. Vim is based on Stevie, worked on by: Tim Thompson, Tony Andrews and G.R. (Fred) Walter. Although hardly any of the original code remains.
  15. ^ “ICCF Holland — helping children in Uganda”. ICCF Holland. Truy cập ngày 23 tháng 10 năm 2007.
  16. ^ a b “Filewatcher”. Bản gốc lưu trữ ngày 11 tháng 7 năm 2011. Truy cập ngày 26 tháng 2 năm 2011.
  17. ^ a b Thompson, Tim (ngày 26 tháng 3 năm 2000). “Stevie”. Truy cập ngày 27 tháng 12 năm 2010.
  18. ^ Tim Thompson (ngày 28 tháng 6 năm 1987). “A mini-vi for the ST”. Truy cập ngày 27 tháng 12 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Đã bỏ qua tham số không rõ |message-id= (trợ giúp)
  19. ^ Tony Andrews (ngày 6 tháng 6 năm 1988). “v15i037: Stevie, an "aspiring" VI clone for Unix, OS/2, Amiga”. Truy cập ngày 27 tháng 12 năm 2010. Đã bỏ qua tham số không rõ |newsgroup= (trợ giúp); Đã bỏ qua tham số không rõ |message-id= (trợ giúp)
  20. ^ a b c d e f Moolenaar, Bram (ngày 15 tháng 1 năm 2002). “Vim, an open-source text editor”. Truy cập ngày 24 tháng 10 năm 2005.
  21. ^ “Textfiles.com”.
  22. ^ “Official Vim Manual, Version 4 summary”. ngày 12 tháng 3 năm 2004. Bản gốc lưu trữ ngày 18 tháng 8 năm 2008. Truy cập ngày 6 tháng 8 năm 2008.
  23. ^ “Official Vim Manual, Version 5 summary”. ngày 17 tháng 1 năm 2004. Bản gốc lưu trữ ngày 21 tháng 8 năm 2008. Truy cập ngày 6 tháng 8 năm 2008.
  24. ^ “Official Vim Manual, Version 6 summary”. ngày 12 tháng 3 năm 2004. Bản gốc lưu trữ ngày 11 tháng 6 năm 2008. Truy cập ngày 6 tháng 8 năm 2008.
  25. ^ “Official Vim Manual, Version 7 summary”. ngày 10 tháng 5 năm 2006. Truy cập ngày 6 tháng 8 năm 2008.
  26. ^ “Google Groups”. groups.google.com.
  27. ^ Google Discussiegroepen. Groups.google.com. Truy cập 2013-12-09.
  28. ^ Bram Moolenaar. “Vim 8.0 released!”. Truy cập ngày 12 tháng 9 năm 2016.
  29. ^ Bram Moolenaar. “Vim 8.1 is released!”. Truy cập ngày 18 tháng 5 năm 2018.
  30. ^ . ISBN 9781565924260. |title= trống hay bị thiếu (trợ giúp)
  31. ^ Vim manual at Sourceforge.net
  32. ^ (PDF). ISBN 0-7357-1001-5 ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf. |title= trống hay bị thiếu (trợ giúp)
  33. ^ “Vim documentation: usr_41”. vimdoc.sourceforge.net.
  34. ^ “Vim documentation: if_mzsch”. ngày 11 tháng 2 năm 2010.
  35. ^ “Vim documentation: usr_41”. vimdoc.sourceforge.net.
  36. ^ "sys-file-list"

    “Vim Online: Downloads”. Truy cập ngày 7 tháng 1 năm 2007.
  37. ^ “Mac OS X Manual Page For vim(1)”. developer.apple.com. Apple Inc. Truy cập ngày 12 tháng 1 năm 2010.
  38. ^ “VimTouch, the development has stalled on this app”. Truy cập ngày 9 tháng 8 năm 2015.
  39. ^ “DroidVim, under active development”. Truy cập ngày 5 tháng 3 năm 2017.
  40. ^ “Vim - Applidium, mobile agency in Paris”. Bản gốc lưu trữ ngày 20 tháng 1 năm 2012. Truy cập ngày 11 tháng 8 năm 2015.
  41. ^ “Neovim: vim, out of the box”.
  42. ^ “Neovim Vision”.
  43. ^ “Switching to NeoVim”.
  44. ^ “How to start using Neovim instead of Vim”. Bản gốc lưu trữ ngày 4 tháng 6 năm 2017. Truy cập ngày 14 tháng 11 năm 2018.
  45. ^ “Neovim: Rebuilding Vim For the 21st Century”.
  46. ^ “Vimcasts.org blog post”.
  47. ^ “GitHub - neovim/neovim: Vim-fork focused on extensibility and usability”.
  48. ^ “Bountysource fundraiser”.
  49. ^ “NyaoVim frontend”.
  50. ^ “Mac OS X frontend”.
  51. ^ “Neovim PPA information”.
  52. ^ “Neovim wiki: installation instructions”.

Liên kết ngoài[sửa | sửa mã nguồn]