it-swarm-vi.com

VISUAL so với EDITOR - những gì khác biệt?

Tôi thường đặt cả hai biến môi trường VISUALEDITOR 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?

196
xenoterracide

Trình chỉnh sửa EDITOR có thể hoạt động mà không cần sử dụng chức năng đầu cuối "nâng cao" (như chế độ ed hoặc ex cũ của vi). Nó đã được sử dụng trên các thiết bị đầu cuối teletype.

Trình chỉnh sửa VISUAL có thể là trình chỉnh sửa toàn màn hình dưới dạng vi hoặc emacs.

Ví dụ. nếu bạn gọi trình soạn thảo thông qua bash (sử dụng C-x C-e), bash sẽ thử trình soạn thảo VISUAL đầu tiên và sau đó, nếu VISUAL không thành công (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ể bỏ EDITOR bỏ đặt hoặc đặt thành vi -e.

157
andcoz

Câu trả lời được chấp nhận có lẽ là một điều trị 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). bài viết Wikipedia cho vi cung cấp một số nền tảng hữu ích về sự khác biệt giữa vi (trình chỉnh sửa chế độ trực quan) và ex (trình chỉnh sửa 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ố:

Người ta nhận thấy rằng các phần của vi sẽ rất khó, nếu không, 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) có thể vẫn đánh giá cao việc có thể có trình chỉnh sửa chế độ dòng ưa thích khác với trình chỉnh sửa "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 sự khác 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 .

37
robla

Tôi đã kết luận rằng $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 sau đó thử $EDITOR kế tiếp.

(Cần dẫn nguồn : Tôi muốn nhận tài liệu phù hợp, có thể là trang nam hoặc thông số POSIX?)

Hiện tại, tôi có những thứ như thế này trong ~/.bashrc~/.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 không có -f sẽ không hoạt động 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

3
Adam Katz

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
2
Steven Penny

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 để ex.

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.

0
Mike William Meyer