Vim trong chế độ Ex hữu ích khi:
- Bạn đang cần chỉnh sửa (nhiều) tệp không tương tác (như một phần của tập lệnh).
- Kết nối của bạn rất chậm hoặc màn hình không được cập nhật sau hành động của bạn.
- Ánh xạ và chữ viết tắt bị vô hiệu hóa.
- Các khóa phổ biến như Escapehoặc Controlkhông hoạt động đúng.
Về cơ bản vi
là chế độ trực quan ex
do đó Vim Ex Mode chỉ là mô phỏng ex
(chúng vẫn chạy cùng một mã), vì vậy có thể chuyển sang chế độ lệnh ex
từ bên trong vi và ngược lại. Thực tế có hai chế độ: Chế độ Ex ( vim -e
) và chế độ Ex được cải tiến cho phép thực hiện các lệnh nâng cao hơn chế độ Ex tương thích vi ( vim -E
). Xem: Sự khác biệt giữa chế độ Ex và chế độ Ex được cải thiện là gì?
Ex là gốc rễ của một gia đình của biên tập viên: edit
, ex
và vi
. Ex là một tập hợp lớn ed
, với phần mở rộng đáng chú ý nhất là một công cụ chỉnh sửa hiển thị. ví dụ (1)
Chỉnh sửa tập tin không tương tác là việc sử dụng phổ biến nhất và những người sử dụng nó theo cách tương tự như sed
và awk
, tuy nhiên họ đang được dòng hơn theo định hướng - họ chỉ đọc các tập tin chuyển tiếp từ đầu đến cuối (họ đang không được thiết kế để làm việc với nhiều dòng ) while vim
được định hướng bộ đệm - bạn có thể di chuyển tiến và lùi trong tệp theo ý muốn khiến nó trở nên mạnh mẽ.
Về cơ bản:
sed
là một S tream ED itor, không phải là một trình soạn thảo tập tin.
Tuy nhiên, mọi người dường như lạm dụng nó để cố gắng chỉnh sửa các tệp và sự thật là nó không chỉnh sửa các tệp. Thứ hai, các tùy chọn của nó như in-place ( -i
) là các phần mở rộng FreeBSD không chuẩn và có thể không khả dụng trên các hệ điều hành khác. Vì vậy, nếu bạn muốn tránh mã không thể truy cập, I / O trên đầu và các tác dụng phụ xấu (như phá hủy liên kết tượng trưng), bạn nên sử dụng ex
trình soạn thảo dựa trên lệnh UNIX tiêu chuẩn (cùng với ed
) BashFAQ .
Những thứ khác mà tôi thấy hữu ích trong chế độ Ex là sử dụng nó làm sân chơi (tương tự như python
bàn điều khiển) nơi bạn có thể thực thi nhiều lệnh liên tiếp, làm việc / gỡ lỗi các biểu thức thông thường, kiểm tra cấu hình vim, thực thi các lệnh bên ngoài hoặc làm việc với các thanh ghi, v.v. .
Ví dụ:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
dễ dàng hơn trong chế độ Ex so với chế độ bình thường (nơi bạn chỉ có thể thấy lệnh cuối cùng của mình).
Tập quán thực hành
Tôi có các bí danh sau đây trong .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Lưu ý: Sử dụng bufdo
không phải là ex
phương pháp tuân thủ POSIX (theo hướng dẫn sử dụng ), do đó bạn có thể cân nhắc sử dụng phương pháp này find
thay thế. Các !
được sử dụng để buộc chuyển đổi các bộ đệm mà không lưu (nếu không cảnh báo được tạo ra).
Cái đầu tiên tôi đang sử dụng để cắt các khoảng trắng ở tất cả các tệp nguồn của mình, ví dụ:
trim **/*.php
Cái thứ hai chuyển đổi tất cả các tab thành khoảng trắng (đệ quy), ví dụ:
retab **/*.php
Đối với tôi sử dụng retab
là đủ, nhưng có một số nhược điểm được mô tả ở đây . Thêm phụ -V
để tăng sản lượng dài hạn.
Lưu ý rằng ví dụ trên sử dụng zsh / bash4 globbing ( **
), do đó hãy chắc chắn rằng vỏ của bạn hỗ trợ nó và nó đã được kích hoạt.
Để biết thêm ví dụ thực tế (như phân tích tệp html), hãy kiểm tra:
Ngoài ra, hãy tìm hiểu thêm về chế độ Ex tại:
Q
vàq:
khá khác nhau. Bạn chỉ đang đề cập đếnQ
phải không?