Tôi thường đặt cả hai biến VISUAL
và EDITOR
môi trường cho cùng một thứ, nhưng sự khác biệt là gì? Tại sao tôi lại đặt chúng khác nhau? Khi phát triển ứng dụng, tại sao tôi nên chọn xem xét VISUAL
trước EDITOR
hoặc ngược lại?
Tôi thường đặt cả hai biến VISUAL
và EDITOR
môi trường cho cùng một thứ, nhưng sự khác biệt là gì? Tại sao tôi lại đặt chúng khác nhau? Khi phát triển ứng dụng, tại sao tôi nên chọn xem xét VISUAL
trước EDITOR
hoặc ngược lại?
Câu trả lời:
Các EDITOR
biên tập viên sẽ có thể làm việc mà không sử dụng các chức năng thiết bị đầu cuối "tiên tiến" (như cũ ed
hay ex
phương thức vi
). Nó đã được sử dụng trên các thiết bị đầu cuối teletype.
Một VISUAL
trình soạn thảo có thể là một trình soạn thảo toàn màn hình như vi
hoặc emacs
.
Ví dụ: nếu bạn gọi trình soạn thảo thông qua bash (bằng cách sử dụng C-x C-e
), bash sẽ thử VISUAL
trình chỉnh sửa đầu tiên và sau đó, nếu VISUAL
thất bại (vì thiết bị đầu cuối không hỗ trợ trình chỉnh sửa toàn màn hình), nó sẽ thử EDITOR
.
Ngày nay, bạn có thể EDITOR
bỏ đặt hoặc đặt thành vi -e
.
ed
và tương tự không phổ biến lắm nên tôi tin rằng chỉ cần bỏ qua VISUAL
và sử dụng EDITOR
.
C-x C-e
bash. Rất tiện dụng.
EDITOR
là không đủ, ví dụ như git
trên Ubuntu 12.04. Không VISUAL
được thiết lập git
bỏ qua EDITOR
và chỉ sử dụng nano
(được biên dịch theo mặc định, tôi đoán).
ed
. Khi các trình soạn thảo với GUI xuất hiện - và bởi GUI, ý tôi là GUI CLI (vim, emacs, v.v .-- think ncurses), không phải GUI môi trường máy tính để bàn - quá trình chỉnh sửa đã thay đổi đáng kể, do đó cần phải có một biến khác. Trong ngữ cảnh này, các trình soạn thảo GUI CLI GUI và môi trường máy tính để bàn ít nhiều giống nhau, vì vậy bạn có thể đặt VISUAL thành một trong hai; tuy nhiên, EDITOR có nghĩa là cho một quy trình công việc khác nhau cơ bản. Tất nhiên, đây là tất cả lịch sử. Không ai sử dụng ed những ngày này.
Câu trả lời được chấp nhận có lẽ là một cách đối xử tốt, ngắn, nhưng đây sẽ là một nỗ lực để đi sâu hơn khi sự khác biệt giữa VISUAL và EDITOR vẫn có thể quan trọng (dựa trên câu trả lời của Adam Katz ).
Thông số POSIX vẫn phân biệt giữa trình chỉnh sửa chế độ trực quan và trình chỉnh sửa dòng. Điều này thực sự quan trọng trở lại trong những ngày khi định vị con trỏ trên các kết nối nối tiếp là khó khăn (đặc biệt là do tốc độ của kết nối nối tiếp). Các bài viết trên Wikipedia cho vi cung cấp cho một số nền tảng hữu ích về sự khác biệt giữa vi (một trình soạn thảo chế độ hình ảnh) và cũ (một trình soạn thảo dòng). Nếu bạn đào sâu nghiên cứu, bạn sẽ tìm thấy phần "RATIONALE" của thông số "ex" , điều này đưa ra lý do cho sự khác biệt vẫn còn trong thông số kỹ thuật:
Người ta nhận thấy rằng các phần của vi sẽ rất khó, nếu không nói là không thể thực hiện thỏa đáng trên thiết bị đầu cuối chế độ khối hoặc thiết bị đầu cuối mà không có bất kỳ hình thức địa chỉ con trỏ nào, do đó không bắt buộc các tính năng đó phải hoạt động trên tất cả các thiết bị đầu cuối . Tuy nhiên, ý định là việc triển khai vi sẽ cung cấp đầy đủ các khả năng trên tất cả các thiết bị đầu cuối có khả năng hỗ trợ chúng.
Tôi không cần điều này kể từ khi từ bỏ modem 300 baud của mình, nhưng tôi có thể tưởng tượng rằng những người sử dụng các dòng nối tiếp chậm để kết nối với các hệ thống nhúng (và / hoặc qua các kết nối thực sự nguy hiểm) vẫn có thể đánh giá cao việc có chế độ dòng ưa thích trình chỉnh sửa khác với trình soạn thảo "trực quan" như vi. Mã thiết bị đầu cuối kiểu VT100 qua kết nối hẹp, chậm, hẹp có thể bị "phình to" trong các ứng dụng hạn chế.
Đối với phần còn lại của chúng tôi, dường như câu trả lời "chính xác" dường như là "đặt cả hai thành trình soạn thảo ưa thích của bạn". Có thể đồng ý chọn phân biệt này cho trình soạn thảo cục bộ / đồ họa (ví dụ Sublime hoặc gvim) so với trình chỉnh sửa cửa sổ đầu cuối (ví dụ vi hoặc emacs), nhưng có thể có hàng núi lý do tại sao điều đó có thể sẽ không hoạt động như mong đợi .
Một số công cụ chỉ chấp nhận EDITOR, ví dụ shell dựng sẵn fc :
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR, then vi
Tôi đã kết luận đó $VISUAL
là đồ họa và $EDITOR
là dòng lệnh. Nếu không xác định, bất cứ điều gì tìm kiếm $VISUAL
nên thử $EDITOR
tiếp theo.
( Cần dẫn nguồn: Tôi muốn nhận tài liệu phù hợp, có thể là trang dành cho nam hoặc thông số POSIX?)
Hiện tại, tôi có những thứ như thế này trong tôi ~/.bashrc
và ~/.zshrc
:
EDITOR="$(command -v vim)"
# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
export VISUAL="$(command -v gvim) -f"
SUDO_EDITOR="$VISUAL"
else
SUDO_EDITOR="$EDITOR"
fi
gvim
mà -f
không làm việc với các chương trình dự kiến sẽ hành động theo các chỉnh sửa của bạn. Điều này chắc chắn bao gồm sudoeditor
( sudo -e
).
Điều này có thể phá vỡ nếu bạn có khoảng trắng trong đường dẫn đến vim. Nếu đó là một vấn đề, hãy cài đặt nó đúng cách hoặc xem xét các liên kết tượng trưng như/usr/local/bin/gvim
$VISUAL
hay không phụ thuộc vào việc bạn có thiết bị đầu cuối có khả năng định vị con trỏ hay không, chứ không phải bạn có hệ thống cửa sổ hay không.
$DISPLAY
, nhưng đó là điều tốt để biết.
Vì dường như không có bất kỳ môi trường nào mà vi hoặc tương tự sẽ thất bại, tôi đã thực hiện cài đặt VISUAL thành một cái gì đó cần một HIỂN THỊ X và EDITOR.
Hầu hết, điều đó dường như gây ra sự cố cho tôi khi một số chương trình không sử dụng VISUAL.
$VISUAL
như một đoạn mã shell mà chúng gắn tên tệp (trích dẫn shell) vào, nhưng một số ứng dụng coi đó là tên của một tệp thực thi mà chúng có thể hoặc không thể tìm kiếm$PATH
. Vì vậy, tốt nhất là đặtVISUAL
(vàEDITOR
) thành đường dẫn đầy đủ thành tệp thực thi (có thể là tập lệnh bao bọc nếu bạn muốn ví dụ tùy chọn).