Để xử lý tập tin text trên Linux, có rất nhiều trình biên tập dùng dòng lệnh (command line text editors), trong đó phổ biến có vi, Vim (vi-improved), emacs. Trong đó vi là 1 trình biên tập rất phổ biến và thường hay sử dụng.

 

Các thao tác xử lý tập tin dùng trình biên tập vi

 

LệnhThao tácVí dụ
vi <filename>Tạo tập tin mới nếu chưa có hoặc mở tập tin đã có để chỉnh sửavi myfile.txt
view <filename> Mở tập tin ở chế độ readonlyview README.txt vi -R README.txt
vi -r <filename>Recover và mở lại tập tin đang chỉnh sửa do trước đó session bị thoát đột ngột/crashvi -r README.txt
vi +n <filename>Mở tập tin với con trỏ ở dòng thứ nvi +10 README.txt
vi + <filename>Mở tập tin với con trỏ ở dòng cuối cùngvi + README.txt
vi +/<pattern> <filename>Mở tập tin với con trỏ ở vị trí chuỗi <pattern> đầu tiên nếu cóvi +/License README.txt

 

Thao tác vào chế độ insert & thao tác lưu/thoát ở chế độ command

Phím/LệnhThao tác
iChuyển sang chế độ insert ở vị trí con trỏ
aChuyển sang chế độ insert ở vị trí kế tiếp con trỏ
IChuyển sang chế độ insert ở đầu dòng
AChuyển sang chế độ insert ở cuối dòng
oThêm dòng mới phía dưới dòng hiện tại và chuyển sang chế độ insert
OThêm dòng mới phía trên dòng hiện tại và chuyển sang chế độ insert
EscThoát chế độ insert trở về chế độ command
:wLưu lại nội dung
:w!Lưu lại file bị set readonly
:q!Thoát và không lưu lại những thay đổi
:wqLưu lại nội dung và thoát
😡Lưu lại nội dung và thoát

 

Thao tác di chuyển trong vi

Phím/LệnhChế độThao tác
Up/Down/Left/RightInsertDi chuyển con trỏ
K/J/H/LCommandDi chuyển con trỏ
G (= Shift + g)CommandXuống cuối tập tin
1G (= 1 + Shift + g)CommandLên đầu tập tin
nG (= number + Shift + g)CommandĐến dòng thứ n
Ctrl + f (hoặc Page Down)CommandCuộn xuống 1 trang
Ctrl + b (hoặc Page Up)CommandCuộn lên 1 trang
HCommandLên dòng đầu trang hiện tại
LCommandXuống dòng cuối trang hiện tại
wCommandDi chuyển tới từ tiếp theo
bCommandDi chuyển về từ phía trước
0CommandDi chuyển đến đầu dòng
$CommandDi chuyển đến cuối dòng

 

Thao tác cắt dán

Phím/LệnhChế độThao tác
yyCommandCopy dòng hiện tại
nyyCommandCopy n dòng từ dòng có con trỏ
ddCommandCut dòng hiện tại/Xóa dòng hiện tại
nddCommandCut n dòng từ dòng có con trỏ/Xóa n dòng từ dòng có con trỏ
pCommandPaste xuống dưới dòng hiện tại
PCommandPaste phía trên dòng hiện tại
xCommandXóa ký tự về phía bên phải (delete)
XCommandXóa ký tự về phía bên trái (backspace)
dwCommandXóa từ ở vị trí con trỏ
D (= Shift + d)CommandXóa từ vị trí con trỏ tới cuối dòng
dG (= d + Shift + g)CommandXóa từ vị trí con trỏ tới cuối tập tin
:r abc.txtCommandCopy và paste nội dung file abc.txt trong cùng thư mục vào file hiện tại vào sau dòng có chứa con trỏ
:0r abc.txtCommandCopy và paste nội dung file abc.txt trong cùng thư mục vào đầu file hiện tại
:$r abc.txtCommandCopy và paste nội dung file abc.txt trong cùng thư mục vào cuối file hiện tại
JCommandKéo dòng phía dưới lên nối vào dòng hiện tại
:!dateCommandChạy lệnh linux khi đang ở trong vi - dùng dấu ! Enter để quay lại vi
:r !dateCommandChạy lệnh linux khi đang ở trong vi và insert kết quả câu lệnh vào file text đang xử lý

 

Thao tác chỉnh sửa trong vi

PhímChế độThao tác
rCommandThay ký tự ở con trỏ bằng ký tự gõ tiếp theo
~CommandĐổi ký tự sang hoa/thường
cc hoặc S (= Shift + s)CommandXóa dòng hiện tại và chuyển sang chế độ Insert
C (= Shift + c) hoặc c$CommandXóa từ vị trí con trỏ tới cuối dòng và chuyển sang chế độ Insert
cwCommandXóa từ hiện tại và chuyển sang chế độ Insert
R (= Shift + r)CommandChuyển sang chế độ Replace
sCommandXóa ký tự hiện tại và chuyển sang chế độ Insert

 

Thao tác tìm kiếm

Phím/LệnhChế độThao tác
/abcdCommandTìm nội dung abcd
nCommandTìm tiếp nội dung abcd
NCommandTìm quay lui nội dung abcd
:%s/abcd/xyz/gCommandTìm và thay nội dung abcd thành xyz trong toàn bộ tập tin

 

Thao tác khác

Phím/LệnhChế độThao tác
.CommandThực hiện lại thao tác vừa làm (repeat)
uCommandUndo thao tác
:e!CommandUndo toàn bộ thao tác
:set numberCommandHiển thị line number
Ctrl + GCommandHiển thị line/column của vị trí con trỏ hiện tại
:set nonumberCommandBỏ hiển thị line number

 

[ideabox]Trong sqlplus, có thể định nghĩa editor trong 1 session để chỉnh sửa file trực tiếp.

SQL> define _EDITOR=vi

SQL> vi myscript.sql

 

Định nghĩa này có thể đặt trong file glogin.sql trong thư mục ORACLE_HOME/sqlplus/admin

 [/ideabox]