Sử dụng bộ soạn thảo vi trong UNIX và Linux
Phần I: Giới thiệu vi:
Có rất nhiều trình soạn thảo trong UNIX cũng như Linux. Nhưng tình soạn thảo vi là trình soạn thảo được nhiều chuyên gia UNIX và Linux sử dụng. Có lẽ một phần là nó chiếm ít tài nguyên, nhưng cũng có thể là nó tồn tại trong UNIX và Linux từ ngày bắt đầu và không có một hệ UNIX hay Linux nào mà không chứa nó như một trình soạn thảo mặc định.
Ngồi vào máy bạn tạo, bạn tạo ra dữ liệu, thư điện tử, danh sách, bản ghi nhớ, ghi chú, báo cáo…vv. Bạn sẽ dùng một bộ soạn thảo(còn gọi là bộ chỉnh sửa, hoặc hiệu chỉnh) văn bản nào đó để làm công việc vừa kể. Linux có sẵn nhiều chương trình xử lý hoặc hiệu chỉnh văn bản để giúp bạn như: nano, cat, touch… Tuy nhiên để đưa các câu lệnh và trình shell vào một tập tin, bạn cần có một bộ soạn thảo (editor) có khả năng lưu trữ công việc của mình vào một tập tin văn bản dưới dạng mã ASCII. Linux giới thiệu bộ soạn thảo văn bản mang tên vi , mà bạn có thể dùng để hiệu chỉnh hầu như tất cả mọi thứ. vi rất hữu ích cho quản trị hệ thống vì chương trình này có sẵn trên mọi nền UNIX. Do đó khi đã quen tay với vi rồi, bạn tha hồ thao tác mọi hệ thống chạy UNIX. Ngoài ra vi cũng có lợi vì chiếm rất ít tài nguyên khi thi hành lệnh. Trong khi một số chương trình khác không thể chạy được vì xung đột phần cứng hoặc là vì hệ thống, vi vẫn hoạt động bình thường.
Hai bộ vi và ex đi kèm với bản phát hành Red Hat thực ra là danh xưng khác nhau của bộ soạn thảo vim (VI iMproved). Hai tên vi và ex gắn liền với vim, do đó khi chạy vi , thực ra bạn đang chạy vim. Mời bạn xem tập tin /usr/share/vim/vim61/doc/vi_diff.txt hay /usr/share/doc/vim-common-6.1/doc/vi_diff.txt để biết tóm tắt những điểm khác nhau giữa vi và vim.

Hình 1.1 Soạn thảo với vi
Linux có những bộ soạn thảo văn bản khác: một chương trình dạng đồ họa để dùng với XFree86 và hai bộ chuẩn không đồ họa mang tên ed và ex. Cả hai đều mang tính line-oriented, nghĩa là bạn chỉ có thể làm việc từng hàng một. Một chương trình khác mang tên emacs cũng có mặt trong các bản phát hành Linux. vi và emacs là những bộ soạn thảo toàn màn hình. Thông tin xuất hiện theo từng màn hình một để bạn có thể chỉnh sửa, thêm theo ngữ cảnh.
Trong bài này không bàn nhiều về ed hay ex, bởi vì bạn sẽ thấy vi rất dễ dùng và có sẵn trên mọi máy chạy UNIX, bao gồm cả Linux.
Muốn hiểu vi, bạn cần tìm hiểu vài nét về vi trong thế giới UNIX. Cho dù nhiều hệ điều hành ngày nay đã có những bộ soạn thảo mạnh mẽ và thân thiện với người sử dụng ví dụ như: Open Offices…, nhưng bạn vẫn nên tìm hiểu về vi bởi vì bất kỳ bản UNIX nào cũng có sẵn bộ vi. Đôi lúc vi là bộ soạn thảo duy nhất sẵn có vào lúc cần thiết, vì vậy bạn cần biết vài thao tác căn bản. Hơn nữa giờ đây với những phiên bản mới (v.6.x) vi đã trở nên thân thiện hơn và đã có nhiều phiên bản chạy trên Windows.
Trước đây UNIX được triển khai trong hoàn cảnh terminal của người sử dụng là máy teletype hoặc một dạng máy in kết quả ra giấy chạy chậm rì. Vào thời đó màn hình chưa được dùng nhiều. Bộ soạn thảo văn bản dùng cho môi trường như thế thường là line-oriented, mà người sử dụng chỉ thấy và chỉ làm việc trên một dòng lệnh duy nhất mà thôi.
Hiện nay các hệ UNIX còn dùng hai bộ soạn thảo line-oriented: ed và ex.
Khi UNIX bắt đầu ra đời, sinh viên đại học được dùng UNIX không mất tiền và cùng góp sức triển khai hệ điều hành này. Đại học California và Berkeley có nhiều đóng góp, trong đó có bộ soạn thảo toàn màn hình, thay thế việc xử lý từng dòng lệnh một. Bộ soạn thảo toàn màn hình này được gọi là vi, viết tắt của chữ “Visual”.
Đã đến lúc chuyển sang loại hình công việc screen-oriented, nhìn cả màn hình thay vì từng dòng một. Người sử dụng làm việc với các terminal nhìn trực tiếp vào màn hình, thay vì làm việc với các thiết bị in ra giấy.
Trong phần này chỉ giới thiệu đôi chút về vi, muốn biết vi hoạt động và sử dụng như thế nào mời các bạn đón đọc tiếp phần II – vi là gì?
II – Vi là gì ?:
Trong phần trước chúng ta đã được giới thiệu về VI và biết được sự ra đời cũng như tầm quan trọng và sự hữu ích của VI. Phần này các bạn sẽ hiểu được sự hoạt động của VI.
Cũng như hàng triệu người khác đang sử dụng vi, bạn sẽ thấy ứng dụng này khởi động nhanh và có thể dùng cho việc đơn giản cũng như phức tạp. Bạn dùng vi để nhập văn bản, chỉnh sửa hoặc xóa bỏ văn bản. Ngoài ra bạn còn tìm kiếm và thay thế, cắt, chép, và dán từng khối văn bản.
Vi cũng giúp bạn cắt xén tỉa gọt văn bản cho đúng ý mình. Bạn tùy nghi di chuyển con trỏ đến bất kỳ chỗ nào trên màn hình cũng như trên phạm vi văn bản đang được xử lý. Bộ soạn thảo vi không phải là phần mềm xử lý văn bản, cũng không là ứng dụng chế bản văn phòng, do đó sẽ không có trình đơn (menu) và cũng không có các tiện ích trợ giúp.
Các ứng dụng xử lý văn bản thường có hai định dạng, một loại trên màn hình và một dùng khi in ra, chẳng hạn như trình bày văn bản dạng in đậm, in nghiêng, hoặc gạch dưới. Vi lại không như thế. Các lệnh khác của Linux có thể thực thi vài điều vừa kể, chẳng hạn như lệnh lp thực hành in và lệnh nroff có khả năng định dạng văn bản. Một vài chương trình xử lý văn bản như TeX và LaTeX, có thể xử lý các câu lệnh nhúng trong văn bản, chẳng hạn như in đậm hoặc gạch dưới.
Bộ soạn thảo vi chạy ở hai chế độ khác nhau:
- Ở chế độ câu lệnh, những gì bạn gõ vào sẽ được hiểu như là câu lệnh ra lệnh cho vi. Lệnh sẽ bảo vi lưu tập tin, thoát khỏi vi, chuyển con trỏ đến các vị trí khác nhau trong tập tin, chỉnh sửa, sắp xếp, xóa bỏ, thay thế và tìm kiếm đoạn văn bản.
– Ở chế độ nhập liệu hoặc còn gọi là nhập văn bản (chế độ INSERT), những gì bạn gõ vào được máy hiểu là nội dung của tập tin mà bạn đang chỉnh sửa. Theo chế độ này, vi hành động như là chiếc máy đánh chữ đơn thuần.
Trong một phiên chỉnh sửa văn bản, bạn có thể chuyển từ chế độ này sang chế độ khác. Bạn phải nhớ mình đang ở chế độ nào và biết cách chuyển đổi. Chương này sẽ giới thiệu tùy chọn showmode giúp bạn biết xem vi đang thuộc chế độ nào. Chỉ cần tập luyện ít lâu là bạn sẽ thấy vi rất tiện lợi để xử lý các tập tin ASCII Linux, đặc biệt là các tập tin cấu hình và shell script.
Để biết được trình soạn thảo vi làm việc như nào và bạn có thể gỡ lỗi (debug error) xảy ra trong quá trình dùng vi thì mời các bạn đón đọc phần tiếp theo: Tìm hiểu tiến trình soạn thảo Vi – Phần III.
III – Tìm hiểu tiến trình soạn thảo và cách sử dụng Vi:
Bạn soạn thảo bằng cách tạo ra văn bản mới hoặc chỉnh sửa văn bản đã có sẵn. Tạo ra văn bản mới tức là viết chữ vào một tập tin được đặt tên theo dạng Linux. Khi chỉnh sửa, bạn dùng tên tập tin có sẵn để gọi bản sao của tập tin ấy ra trình diện tại phiên soạn thảo. Trong cả hai trường hợp, khi sử dụng bộ soạn thảo tức là bạn đã lưu giữ văn bản tại bộ nhớ của máy ở một vùng được gọi là vùng đệm.
Vùng đệm sẽ không thay đổi gì ở nội dung của tập tin cho đến khi bạn ra lệnh lưu nội dung vùng đệm. Chỉ khi nào bạn ra lệnh này xong, máy sẽ ghi những điều chỉnh sửa vào đĩa cứng. Lúc ấy những gì bạn vừa thay đổi mới có hiệu lực thường trực. Do đó nếu sau khi thao tác một lúc, bạn quyết định là không nên thay đổi gì ở nội dung cũ thì cứ để y nguyên như thế. Trong một phiên làm việc, bạn muốn lưu những thay đổi ấy bao nhiêu lần cũng được, và bạn nên ra lệnh lưu một cách đều đặn, phòng khi mất nguồn đột xuất hoặc treo máy. Khi ra lệnh lưu, bạn không phải thoát khỏi bộ soạn thảo. Chương này sẽ chỉ bạn nhiều cách thoát ra khỏi bộ soạn thảo.
Bộ soạn thảo vi được coi là có tính tương tác bởi vì chương trình sẽ giao lưu qua lại với bạn trong phiên làm việc. Vi liên lạc với bạn bằng cách hiển thị tình trạng phiên làm viêc, hoặc giả hiển thị những thông báo lỗi, hoặc đôi lúc trên màn hình không xuất hiện điều gì cả (đúng theo kiểu của Linux). Dòng cuối cùng trên màn hình, gọi là dòng trạng thái, mang những lời nhắn của Linux.
Bạn sử dụng bộ soạn thảo để chỉnh sửa, sắp xếp lại, xóa bỏ, tìm kiếm và thay thế đoạn văn bản. Các thao tác chỉnh sửa như thế được tiến hành ở chế độ soạn thảo. Trong nhiều trường hợp, lệnh chỉ là một ký tự tương ứng với chữ đầu tiên của tên một hành động. Ví dụ chữ I tương ứng với hành động Insert, và r được dùng để replace( thay thế) một ký tự.
Hầu hết các câu lệnh đều diễn ra trên một dòng hoặc nhiều dòng ký tự. Dòng được đánh số từ 1(dòng đầu tiên) cho đến dòng cuối cùng của vùng đệm. Khi bạn thêm hoặc bớt dòng, số hiệu của dòng sẽ tự động chỉnh lý. Số hiệu của dòng tức là địa chỉ của dòng đó trong vùng đệm. Vùng địa chỉ là hai địa chỉ hoặc hai số hiệu của dòng được cách bởi dấu phẩy. Nếu muốn xác định vùng địa chỉ từ dòng thứ ba đến dòng thứ tám vủa vùng đệm, bạn viết 3, 8.
Vị trí con trỏ luôn chỉ bạn biết vị trí hiện hàn của vùng đệm soạn thảo. Một vài lệnh mà bạn gõ ở chế độ ra lệnh sẽ tác động đến ký tự ngay chỗ con trỏ đang nhấp nháy. Nếu bạn không di chuyển con trỏ, những thay đổi sẽ diễn ra tại vị trí ấy. Bộ soạn thảo vi có nhiều lệnh để di chuyển con trỏ tới lui trong vùng đệm soạn thảo. Vi là bộ soạn thảo toàn màn hình. Bạn ra lệnh cho Vi để di chuyển con trỏ đến nhiều nơi trong tập tin, và bạn trực tiếp nhìn thấy những thay đổi diễn ra khi bạn thao tác. Vì thế Vi phải có khả năng di chuyển và chỉnh sửa văn bản trên terminal của chính bạn cũng như ở các loại terminal khác. Vi biết bạn đang dùng terminal nào, và khả năng màn hình của terminal ấy ra sao bằng cách xem xét biến shell mang tên TERM. Linux dùng biến TERM để xác định xem terminal làm được gì, chẳng hạn như gạch dưới, đảo màn hình, xóa màn hình, gán phím chức năng, và khả năng về màu sắc của terminal.
Bạn chỉ cần gõ Vi tại dấu nhắc shell tại dòng lệnh để kích hoạt Vi. Muốn tạo ra hoặc chỉnh sửa một tập tin nào đó, bạn gõ lệnh Vi chung với tên tập tin. Chẳng hạn muốn tạo tập tin abc với Vi, bạn gõ: Vi abc.
Khi Vi được kích hoạt, màn hình terminal sẽ tự động xóa trống, đồng thời một dấu sóng (~) xuất hiện ở phía bên trái mỗi đầu dòng, trừ dòng đầu tiên hay những dòng đã soạn thảo. Dấu sóng báo hiệu dòng trống của vùng đệm. Con trỏ nằm phía ngoài cùng bên trái của dòng đầu tiên. Bạn sẽ trông thấy từ 20 đến 22 dấu sóng ở phía trái màn hình. Nếu màn hình không đúng như thế, bạn nên kiểm tra lại vị trí của TERM. Còn nếu mọi sự diễn ra như mô tả, bạn đã khởi động được Vi, và Vi đang ở chế độ chờ lệnh.Để có thể thao tác hoặc sử dụng Vi một cách hiệu quả nhất, mời các bạn đón đọc phần tiếp theo: IV – Tìm hiểu hai chế độ của Vi và tạo ra tập tin Vi đầu tiên.
IV – Tìm hiểu hai chế độ của Vi và tạo ra tập tin Vi đầu tiên
Vi ( vim ) – the powerful & simple editor for linux
Linux là một hệ điều hành được điều khiển đa phần qua môi trường dòng lệnh ( console ), thêm vào đó, các file cấu hình dịch vụ trên Linux thường được chỉnh sửa bởi trình editor là vi ( hay vim, bản cải thiện của vi ). Nếu bạn là người thường xuyên quản trị server linux qua console, thì vi là trình tiện ích hay sử dụng nhất. Do vậy, học cách sử dụng vi là một yêu cầu tối thiểu và cần thiết cho một người sử dụng linux.
1. Cơ bản
- Sử dụng vi kèm theo tên file(s) muốn edit: vi one.txt two.txt etc.txt
– Có 2 mode: command mode và insert mode. Khi bắt đầu sử dụng lệnh vi, vi mặc định ở command mode. Hoặc ấn Esc để chuyển sang command mode khi người dùng đang ở insert mode.
2. Các lệnh edit cơ bản
- Ấn phím lệnh i hoặc a từ chế độ command mode để chuyển sang insert mode. i để thêm ký tự trước con trỏ, a để thêm ký tự sau con trỏ.
– Sử dụng lệnh h j k l hoặc các phím mũi tên tương ứng để di chuyển con trỏ sang trái, xuống, lên, sang phải.
– Sử dụng x xóa 1 ký tự, dw xóa 1 từ, dd xóa cả 1 dòng.
– Sử dụng số N đi trước phím lệnh để lặp lại N lần tác dụng của lệnh. Ví dụ, 3dw sẽ xóa 3 từ tính từ vị trí con trỏ.
– Sử dụng u ( = undo )để khôi phục lại những thay đổi trước đó.
– Sử dụng ZZ hay hay :wq lưu lại tất cả thay đổi và thoát.
– Sử dụng :q! thoát ra không lưu lại bất kỳ thay đổi nào.
3. Cắt và dán
- yy sao chép dòng hiện tại vào buffer, Nyy sao chép N dòng.
– p ( P ) dán nội dung từ buffer vào dưới ( trên ) dòng hiện tại
4. Nhảy đến hàng hay cột
- Gõ một số N trước ký tự G để đi đến dòng thứ N, vd 23G sẽ nhảy đến dòng 23.
– Gõ một số N trước ký tự | (pipe) để nhảy đến cột thứ N.
5.
Sử dụng . để lặp lại action gần nhất. Ví dụ người dùng gõ i để insert dòng chữ “hello world”, sau đó chuyển sang chế độ command mode bằng phím Esc, nhảy xuống dòng và gõ . , dòng chữ “hello world” sẽ hiện ra.
6. Tìm kiếm
- Sử dụng / (?) đi theo sau là từ muốn tìm để tìm kiếm từ trong phần văn bản sau ( trước ) con trỏ. ví dụ /foobar hay ?foobar.
– Sau khi kết quả tìm kiếm đầu tiên hiện ra, sử dụng n để tìm kiếm tiếp trong phần văn bản còn lại sau con trỏ, N để tìm kiếm ngược trở lại đầu văn bản trước con trỏ.
7. Các lệnh colon ( đi sau dấu : )
- :%s/foo/bar/g tìm sự xuất hiện của “foo” trong toàn bộ file và thay thế bằng “bar”, /foo/bar/g chỉ thay thế ở dòng hiện tại.
– et nu hiển thị số dòng trước mỗi dòng, et nonu để bỏ hiển thị số dòng.
– :1,8d xóa từ dòng 1 cho đến dòng 8 trong file.
– Sử dụng ma để đánh dấu dòng hiện tại là a ( có thể là bất cứ ký tự nào từ a-z ). Sau đó dùng ‘a để nhảy đến dòng đã được dánh dấu là a từ bất cứ đâu. Có thể sử dụng với colon, :’a,’b d xóa tất cả các dòng bắt đầu từ dòng được đánh dấu là a cho đến dòng được đánh dấu là b, hoặc ngược lại.
– :w newfile.txt để save nội dung của file hiện tại vào một file mới là newfile.txt ( tựa “save as” bên Win Word ).
– :8,16 co 32 để copy dòng 8 đến 16 đến điểm sau dòng 32.
– :3,16 m 32 để chuyển rời dòng 8 đến 16 đến điểm sau dòng 32.
– Nếu dùng vi để mở nhiều file ( vi file1 file2 file3 ), có thể sử dụng :n để nhảy đến file tiếp theo và :rew để nhảy quay ngược lại đến file đầu tiên, :args để hiện thị tất cả các file đang được mở.
8. Vi for Smarties
- Sử dụng G để nhảy đến dòng cuối cùng của file.
– Khi xóa nhiều dòng, di chuyển con chuột đến dòng đầu tiên, gõ ma để đánh dấu, sau di đến dòng cuối cùng và gõ d’a để xóa những dòng đó.
– $ để nhảy xuống cuối dòng, :$ để nhảy đến dòng cuối của file.
- 0 để nhảy đến đầu dòng, :0 để nhảy tới dòng đầu tiên của file.
– d$ xóa từ vị trí con trỏ hiện tại đến cuối dòng.
– :10,$ d xóa từ dòng 10 cho đến dòng cuối cùng của file, hoặc ngược lại.
– :10,20 m 0 chuyển rời dòng 10 đến 20 lên trên dòng đầu tiên của file.
9. Shell
- Sử dụng :!command để thi hành lệnh command trong môi trường vi.
Trên đây là giới thiệu cách sử dụng vi một cách cơ bản và đủ dùng cho mọi đối tượng người sử dụng linux. Người dùng muốn tham khảo thêm có thể lên website của vim tại http://vim.wikia.com/wiki/Best_Vim_Tips.
Trích từ Internet