Có cách nào để nói với emacs / vi / vim (từ dòng lệnh) rằng tôi muốn xem tệp trong view-mode
hoặc read-only
.
Tôi biết cách mở tệp dưới dạng chỉ đọc nếu emacs / vi / vim đang chạy.
Có cách nào để nói với emacs / vi / vim (từ dòng lệnh) rằng tôi muốn xem tệp trong view-mode
hoặc read-only
.
Tôi biết cách mở tệp dưới dạng chỉ đọc nếu emacs / vi / vim đang chạy.
Câu trả lời:
Đối với emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Không có tùy chọn khởi động để buộc chỉ đọc.
Chỉnh sửa:
Nếu bạn đặt hàm nhỏ này trong tập lệnh khởi động shell của mình (ví dụ .bashrc), bạn có thể mở tệp chỉ đọc bằng cách nhậpev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
tên tệp vim -R
xem tên tập tin
Về cơ bản vim ở chế độ chỉ đọc; đơn giản!
Như được gợi ý bởi nhận xét, trong trường hợp view
được liên kết với đơn giản vi
, đây là các lệnh bash để kiểm tra tình huống đầu tiên và sau đó sửa nó:
# non-destructive inspection
which vim
which view
ls -l $(which view)
# overwrite current view with symlink to vim, requires root
ln -sfv $(which vim) $(which view)
vim
có tô sáng cú pháp nhưng view
không có, có lẽ bạn view
là một liên kết đến phiên bản tối thiểu vim
không có cú pháp tô sáng cú pháp được biên dịch. So sánh kết quả đầu ra của :version
lệnh.
argv[0]
để quyết định hành vi của nó. Đó là một mẹo phổ biến; AFAIK đôi khi GCC và Bash cũng làm điều này.
vim -R <file>
cho phép viết với :w!
vim -c ":set nomodifiable" <file>
Ngăn người dùng thực hiện bất kỳ thay đổi nào đối với tệp trong bộ đệm. Nhưng người dùng có thể làm cho bộ đệm có thể sửa đổi với:set modifiable
Bạn đã có thể sử dụng
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
để ngăn người dùng tắt "danh nghĩa" và cho phép người dùng thoát bằng cách nhấn q
. Nhưng, sau đó người dùng không thể vào chế độ lệnh, có thể hoặc không thể là những gì bạn muốn.
Bạn cũng có thể mở tệp bằng lệnh less:
less <file>
Để xem tệp trong môi trường giống như vim nhưng không có khả năng thay đổi tệp.
less
, mặc dù như @nxdrvr chỉ ra, bạn có thể nhấn phím v để mở tệp ở chế độ có thể chỉnh sửa trongvi
Theo dõi nhỏ cho câu trả lời được chấp nhận: Bạn có thể đặt bí danh này trong trình bao của mình để giảm nó thành một lệnh duy nhất. Ví dụ: trong bash, bạn có thể đặt phần sau vào .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(các shell khác nhau sẽ có các định dạng khác nhau để thực hiện điều này, nhưng bạn có ý tưởng)
Tôi đã thêm nó dưới dạng một nhận xét để trả lời câu trả lời được chấp nhận, nhưng dường như không thể có một khối "mã" nhiều dòng trong một bình luận, và (dù sao thì bash) mã trên thực sự cần phải có trên 3 dòng riêng biệt.
Để chỉ xem tệp mà không có khả năng chỉnh sửa:
cat <file> | less
Trong less
bạn có thể vào "chỉnh sửa chế độ tập tin" bằng cách bấm vphím. Nhưng bạn không thể chỉnh sửa đầu vào tiêu chuẩn, do đó, việc chuyển đầu ra cat <file>
thành ít hơn, dừng less
chuyển sang chế độ 'chỉnh sửa' khi nhấn 'v'.
Đối với vim cách tiếp cận tương tự
cat <file> | vim -
v
lời đề nghị. Tiện lợi
cat
. Chỉ cần sử dụng <FILENAME less
.
<file> less
sẽ báo lỗi, tôi cho rằng bạn có ý less <file>
, nhưng như đã giải thích trong câu trả lời, khi sử dụng less
trực tiếp, người dùng có thể nhấn phím v và chuyển sang chế độ chỉnh sửa. Đường ống cat
để less
ngăn chặn điều này xảy ra.
less < FILENAME
, mang đến cho bạn "không thể chỉnh sửa đầu vào tiêu chuẩn" khi bạn nhấn V . Tương tự với Vim : vim - < FILENAME
.
Đối với emacs, bạn cũng có thể sử dụng chế độ xem .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
hoặc thay thế bên trong một thiết bị đầu cuối:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Hoặc bạn có thể sử dụng tập lệnh bao bọc của tôi
gửi một tập tin đến std out, có thể được chấp nhận với kích thước của tập tin
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Tôi sẽ không phản bác bất cứ ai trả lời ở đây, nhưng tôi muốn thêm một số thông tin về Read-only Mode
tập tin. Theo tài liệu oreilly Chế độ chỉ đọc Sẽ có lúc bạn muốn xem một tệp nhưng muốn bảo vệ tệp đó khỏi các lần nhấn phím và thay đổi. (Bạn có thể muốn gọi trong một tệp dài để thực hành các chuyển động vi hoặc bạn có thể muốn cuộn qua tệp lệnh hoặc chương trình). Bạn có thể nhập tệp ở chế độ chỉ đọc và sử dụng tất cả các lệnh di chuyển vi, nhưng bạn sẽ không thể thay đổi tệp.
Để xem tệp ở chế độ chỉ đọc, hãy nhập một trong hai:
$ vi -R file
hoặc là:
$ view file
(Lệnh view, như lệnh vi, có thể sử dụng bất kỳ tùy chọn dòng lệnh nào để tiến tới một vị trí cụ thể trong tệp.) Nếu bạn quyết định thực hiện một số chỉnh sửa cho tệp, bạn có thể ghi đè chế độ chỉ đọc bằng cách thêm một dấu chấm than vào lệnh write:
:w!
or:
:wq!
Nếu bạn có một vấn đề viết ra các tập tin.
Để biết thêm tại đây