Thứ Năm, 12 tháng 9, 2013

Sử dụng Vim trong Ubuntu

1.Giới thiệu về Vim

Vim – Vi iMprove là bản cải thiện của Vim – một trình soạn thảo phổ biến trên Unix. Vim có tính cấu hình rất cao được xây dựng để cho phép chỉnh sửa văn bản hiệu quả.
Vim thường được gọi là trình soạn thảo của các lập trình viên vì nó rất hữu ích trong lập trình. Vim có thể được nhúng vào trong các IDE mạnh mẽ như Visual Studio hay Qt Creator, Eclipse, … Vim cũng có thể sử dụng trực tiếp trên nền đồ họa bởi gVim hoặc khởi động từ terminal.

2. Cài đặt Vim

Có thể sử dụng gVim chạy được trên cả Linux lẫn Windows như 1 trình soạn thảo độc lập.
Link download gVim: http://www.Vim.org/download.php
Trong Ubuntu có thể cài đặt gVim bằng câu lệnh: sudo apt-get install gvim

3.  Các chế độ làm việc của Vim

Vim làm việc theo 3 chế độ: Chế độ câu lệnh, chế độ
nhập liệu và chế độ trực quan (visual).
- Ở 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 Vim.
Lệnh sẽ bảo Vim lưu tập tin, thoát khỏi Vim, 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, Vim soạn thảo
giống như trình soạn thảo đơn thuần.

- Chế độ Visual là 1 mở rộng của Vim so với vi, là 1 cách đơn giản và mềm dẻo để chọn / bôi đen văn bản.
Vim khởi động ở chế độ câu lệnh:
Để chuyển sang chế độ nhập liệu, phải gõ kí tự “a” hoặc “i”:
Dễ thấy khi chuyển sang chế độ nhập liệu có dòng chữ – INSERT – ở dòng cuối cùng.
Lệnh trong Vim có phân biệt chữ hoa chữ thường.
Để chuyển lại sang chế độ lệnh thì nhấn phím ESC.
Tương tự như notepad++ trên Windows, khi mở hoặc tạo các tập tin có phần mở rộng là: html, cpp, c, … Vim sẽ làm sáng các từ khóa, biến, …
Để thực hiện chức năng này, bạn có thể mở các file có sẵn bằng Vim:
  • Khởi động gVim, chọn File/Open, chọn file cần mở.
  • Khởi động gVim, sau đó :e “đường dẫn đến file cần mở”
  • Trỏ phải vào tên file, chọn Open with gVim
Bạn có thể thiết lập ngôn ngữ lập trình cho Vim mà chưa cần phải lưu tên file bằng cách chọn Syntax/Show Filetypes in menu rồi sau đó vào lại menu Syntax để chọn ngôn ngữ lập trình thích hợp. Hoặc :setf “tên phần mở rộng ngôn ngữ” hay :set language=”tên phần mở rộng ngôn ngữ”
Ví dụ: :setf cpp hay :set language=cpp để thiết lập cú pháp ngôn ngữ C++ 
Ta có thể dùng :syntax on/off để bật/tắt chức năng này.
Trong chế độ lệnh có thể di chuyển con trỏ bằng các phím h, j, k, l tương ứng với sang trái, xuống dưới, lên trên và sang phải.
Để thoát khỏi Vim, có thể dùng menu lệnh: File/Exit hoặc  :x  lưu trước khi thoát hoặc :q! không lưu gì cả. Chi tiết các lệnh sẽ được giới thiệu ở phần sau.

4. Các lệnh cơ bản của Vim

Làm việc với files
Vim command Action
:e filename Mở file.
:w filename Lưu file.
:q Thoát khỏi Vim. Lệnh sẽ vô hiệu nếu file chưa được lưu
:q! Thoát khỏi Vim kể cả file chưa được lưu
:wq Lưu và thoát
:x Lưu và thoát. Tương tự :wq
Sử dụng cả trong chế độ Command và Visual
Vim command Action
j or Up Arrow Di chuyển lên trên 1 dòng. Lưu ý là dòng được kết thúc bằng kí tự Enter.
k or Down Arrow Di chuyển xuống dưới 1 dòng
h or Left Arrow Sang trái 1 kí tự
l or Right Arrow Sang phải 1 kí tự
e Di chuyển về cuối từ, bao gồm cả dấu ,”.?!”
E Chuyển về cuối từ kết thúc bằng dấu cách
b Di chuyển về đầu từ
B Di chuyển về đầu từ được bắt đầu bằng dấu cách.
0 Di chuyển về đầu dòng
^ Di chuyển về kí tự đầu tiên không phải dấu cách của dòng
$ Di chuyển về cuối dòng
H Di chuyển về đầu dòng đầu tiên
M Di chuyển về đầu dòng giữa
L Di chuyển về đầu dòng cuối
:n Di chuyển về đầu dòng có vị trí n
Chèn và đè văn bản
Vim command Action
i Chèn phía trước con trỏ
I Chèn vào đầu dòng
a Chèn phía sau con trỏ
A Chèn vào cuối dòng
o Chèn dòng mới vào bên dưới dòng hiện tại
O Chèn dòng mới vào bên trên dòng hiện tại
C Xóa từ vị trí con trỏ đến cuối dòng hiện tại để chèn.
r Thay thế / ghi đè 1 kí tự.
R Thay thế / ghi đè nhiều kí tự. Ấn ESC để kết thúc.
The ESC key Thoát khỏi chức năng soạn thảo. Chuyển về chức năng lệnh.
Xóa văn bản
Vim command Action
x Xóa kí tự hiện tại ở vị trí con trỏ.
X Xóa kí tự phái trước con trỏ.
dd or :d Xóa dòng hiện tại.
Chế độ Visual
Vim command Action
v Bắt đầu bôi đen kí tự. Sử dùng các lệnh di chuyển để chọn văn bản 1 cách thích hợp.
V Bắt đầu bôi đen dòng
The ESC key Thoát khỏi chế độ Visual trở về chế độ lệnh
Chỉnh sửa văn bản
Chú ý: Đánh dấu (V) là làm việc trong chế độ Visual, khi bạn đánh dấu văn bản. Các lệnh khác làm việc ở chế độ lệnh, khi không có đoạn văn bản nào được chọn.
Vim command Action
~ Chuyển đổi từ kí tự thường sang hoa hoặc ngược lại. Làm việc ở cả chế độ Visual và chế độ lệnh.
> (V) Thụt lề sang phải.
< (V) Thụt lề sang trái.
c (V) Xóa đoạn văn bản được đánh dấu để chèn.
y (V) Sao chép đoạn văn bản được đánh dấu vào bộ nhớ đệm.
d (V) Cắt đoạn văn bản trong bộ nhớ đệm vào vị trí con trỏ.
yy or :y or Y Sao chép 1 dòng.
dd or :d Xóa 1 dòng.
p Dán đoạn văn bản trong bộ nhớ đệm vào sau vị trí con trỏ. Nếu cả dòng thì dán vào vị trí dòng bên dưới.
P Dán đoạn văn bản trong bộ nhớ đệm vào trước vị trí con trỏ. Nếu cả dòng thì dán vào vị trí dòng bên trên.
Undo và redo
Vim command Action
u Undo.
U Undo tất cả các thao tác thực hiện với dòng hiện tại.
Ctrl + r Redo.
Vim command Action
/chuỗi Tìm kiếm chuỗi
n Sử dụng sau lệnh /, tìm chuỗi phù hợp tiếp theo (tìm về cuối)
N Sử dụng sau lệnh /, tìm chuỗi phù hợp phía trước (tìm về đầu)
Thay thế
Vim command Action
:rs/foo/bar/a Substitute foo with barr determines the range and a determines the arguments.
Thay thế foo bởi bar, trong đó r và a có thể thay đổi.
r có thể là:
Không gì cả Làm việc với dòng hiện tại.
number Làm việc trên dòng number được chỉ định
% Toàn bộ văn bản
g có thể là:
g Thay thế toàn bộ, nếu không có tham số này. Vim chỉ thay thế mẫu đầu tiên tìm được trên mỗi dòng.
i Không phân biệt chữ hoa chữ thường
I Phân biệt cả hoa – thường (mặc định)
c Có lựa chọn trước khi thay thế. Khi lựa chọn xuâts hiện, ấn y để đồng ý, n để bỏ qua, a để đồng ý toàn bộ, q để thoát


5. Thiết lập môi trường trong Vim

Vim có nhiều tùy chọn để bạn dùng hay không tùy ý. Dành cho bạn sắp xếp môi trường soạn thảo cho riêng mình.Dưới đây là một số tùy chọn thường được sử dụng:


Viết tắt Nguyên tên và Chức năng
ai autoindent sẽ thụt lề mỗi dòng cho cùng với dòng phía trên. Mặc đình off.
ap autoprint in dòng hiện hành lên màn hình khi dòng thay đổi. Mặc định là on.
eb errorbells làm cho máy kêu bíp mỗi khi gõ sai lệnh. Mặc định off.
nu number hiển thị số hiệu của dòng. Mặc định off
redraw redraw cập nhật màn hình mỗi khi có thay đổi. Mặc định on
report report lập ra kích cỡ của một thay đổi trong tiến trình hiệu chỉnh, và đưa kết quả ra dòng trạng thái. Ví dụ, report=3 sẽ bắn lời nhắn mỗi khí bạn ra lệnh xóa nhiều hơn 3 dòng, song sẽ im lặng nếu bạn xóa ít hơn 3 dòng. Mặc định report=5
sm showmatch hiển thị một dấu mở ngoặc nếu bạn gõ vào một dấu đóng ngoặc. Rất tiện cho lập trình viên. Mặc định là off.
smd showmode hiển thị các thông báo chế độ như: Insert, Visual, … mặc định là on
warn warn hiển thị thông báo khi bạn thoát khỏi Vim khi vùng đệm bị thay đổi mà chưa được lưu. Mặc định là on.
wm=n wrapmargin xác định lề phải. Mặc định wm=0
sw shiftwidth số khoảng trắng khi tab lùi (Ctrl+D)trong lúc dùng autoindent và sử dụng cho lệnh << và >>. Mặc định sw=8
ts tabstop định số khoảng trắng khi tab. Mặc định ts=8

Để sử dụng các tùy chọn trên, bạn sử dụng lệnh :set “tên tùy chọn[=tham số]“. Ví dụ:
:set ai eb sw=4 ts=4
Lệnh trên sẽ thiết lập autoindent, errorbells (tham số này không làm việc trên gVim), shift width =4 và tabstop =4.

Nếu muốn xem các thiết lập của Vim, bạn chỉ đánh lệnh :set mà không sử dụng đối số.
Muốn xem danh sách các tùy chọn và cách thiết lập, bạn gõ :set all
Muốn tắt một tùy chọn, bạn thêm “no” vào trước tên tùy chọn đó vào trong lệnh :set


Ví dụ: 
:set nonumber nowarn
Để sử dụng các tùy chọn này là mặc định cho các lần sử dụng tiếp theo, bạn có thể chỉnh sửa file: ~/.vimrc
Trong gVim, bạn có thể chỉnh sửa bằng cách chọn: Edit/Startup Settings:




Để thiết lập từng tùy chọn cho từng ngôn ngữ, bạn có thể dùng lệnh:
autocmd Filetype <tên mở rộng của ngôn ngữ> set local <các tùy chọn của lệnh set>
Để thay đổi thiết lập màu nền cũng như màu chữ theo các mẫu có sẵn của Vim, bạn dùng lệnh:
colorscheme <tên mẫu>
tên mẫu có thể là: ron, blue, dark, …
hoặc trong gVim có thể chọn Edit/Color Scheme, chọn mẫu phù hợp.



6. Tabs trong Vim
Tabs ở đây là các thẻ tab dùng cho soạn thảo nhiều tài liệu khác nhau đồng thời một cách đơn giản hơn thay vì mở nhiều chương trình Vim.
Để mở nhiều file một lúc trên các tab khác nhau, bạn có thể dùng câu lệnh sau vim với tham số -p trong terminal:
vim -p file1 file2 file3
Đang trong quá trình soạn thảo, muốn tạo mới một tab để soạn thảo văn bản khác có thể dùng lệnh:
:tabnew [tên file] hoặc :tabe [tên file]
Mặc định số tab có thể mở nhiều nhất là 10, nhưng bạn cũng có thể thay đổi thành n tab bằng câu lệnh:
:set tabpagemax=n
Để xem thông tin về các tab đang được mở, sử dụng lệnh:
:tabs
Để di chuyển giữa các tab có thể dùng lệnh :tabn (tab next) di chuyển đến tab phía sau hoặc :tabp (tab previous) di chuyển về tab phía trước.
Bạn cũng có thể di chuyển giữa các tab bằng lệnh gt
Để chuyển về tab đầu tiên dùng lệnh:
:tabfirst hoặc :tabfir
Lệnh di chuyển đến tab cuối cùng là: :tablast
Để hiển thị tab bar hay không bạn có thể dùng lệnh:
:set showtabline=n
trong đó n có giá trị là 2 hoặc 0 tương đương với hiển thị hoặc không hiển thị.
Để di chuyển tab hiện tại đến vị trí khác trong tab bar, có thể dùng lệnh:
:tabm vị trí
chú ý là vị trí tab bắt đầu từ 0.
Để thoát khỏi tất cả các tab bạn dùng lệnh: :qa hoặc :qa! hoặc :wqa hoặc :x a tùy vào mục đích muốn tthoát.

7. Marco trong Vim
Như bạn đã biết, để lặp lại lệnh đã thực hiện trước đó trong Vim có thể dùng lệnh . nhưng lệnh . chỉ lặp lại các thao tác trong 1 lần nhấn phím ESC. Marco là một tính năng mạnh mẽ hơn lệnh . giúp bạn lặp lại nhiều thay đổi hơn.
Để bắt đầu sử dụng Marco nhấn q, tiếp tục nhấn một phím kí tự bất kì từ a đến z đại diện cho tên marco, sau đó thực hiện các thao tác muốn lặp lại, sau đó lại nhấn q để kết thúc marco đó. Để áp dụng marco thì nhấn @ rồi nhấn tên marco.
Ví dụ:
Để bao hàm một số thư viện trong C:
#include “stdio.h”
#include “stdlib.h”
#include “math.h”
#include “string.h”
thay vì đánh toàn bộ đoạn mã trên, ta chỉ đánh tên các thư viện:
stdio.h
stdlib.h
math.h
string.h
Sau đó nhấn ESC để trở về chế độ lệnh, lúc này con trỏ vẫn đang ở dòng cuối cùng, nhấn qa để bắt đầu marco, tên marco là a nếu là qb thì tên marco là b, nhấn a để thêm ” vào cuối, sau đó nhấn ESC, nhấn I để trở về đầu dòng, thêm #include “, sau đó nhấn ESC, nhấn k để trở về dòng bên trên, sau đó nhấn q để kết thúc marco. Nhấn nhiều lần @a để áp dụng marco bạn sẽ thấy kết quả ra đúng như lúc đầu mong muốn.
Để áp dụng marco n lần có thể dùng lệnh: n @ tên marco
Như trong ví dụ trên thay vì nhấn 3 lần @a ta có thể trực tiếp nhấn 3@a.


Không có nhận xét nào:

Đăng nhận xét

Học lập trình web căn bản với PHP

Bài 1: Các kiến thức căn bản Part 1:  https://jimmyvan88.blogspot.com/2012/05/can-ban-lap-trinh-web-voi-php-bai-1-cac.html Part 2:  https://...