มีวิธีบอก emacs / vi / vim (จากบรรทัดคำสั่ง) ที่ฉันต้องการดูไฟล์หรือไม่ view-mode
หรือ read-only
.
ฉันรู้วิธีเปิดไฟล์เป็นการอ่านเฉพาะเมื่อ emacs / vi / vim ทำงานอยู่แล้ว
มีวิธีบอก emacs / vi / vim (จากบรรทัดคำสั่ง) ที่ฉันต้องการดูไฟล์หรือไม่ view-mode
หรือ read-only
.
ฉันรู้วิธีเปิดไฟล์เป็นการอ่านเฉพาะเมื่อ emacs / vi / vim ทำงานอยู่แล้ว
คำตอบ:
สำหรับ emacs:
emacs FILE --eval '(setq buffer-read-only t)'
ไม่มีตัวเลือกการเริ่มต้นเพื่อบังคับให้อ่านอย่างเดียว
แก้ไข:
หากคุณใส่ฟังก์ชั่นเล็ก ๆ นี้ไว้ในสคริปต์เริ่มต้นเชลล์ของคุณ (ตัวอย่างเช่น. bashrc) คุณสามารถเปิดไฟล์แบบอ่านอย่างเดียวโดยพิมพ์ ev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
ชื่อไฟล์ -R
ดูชื่อไฟล์
โดยทั่วไปจะเป็นกลุ่มในโหมดอ่านอย่างเดียว Simples!
ตามความเห็นด้วยความคิดเห็นในกรณี view
เชื่อมโยงกับธรรมดา vi
, นี่ ทุบตี คำสั่งเพื่อตรวจสอบสถานการณ์ก่อนแล้วจึงแก้ไข:
# 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
มีการเน้นไวยากรณ์ แต่ของคุณ view
ไม่อาจเป็นของคุณ view
เป็นลิงก์ไปยังเวอร์ชันขั้นต่ำของ vim
ที่ไม่มีการเน้นไวยากรณ์ที่คอมไพล์แล้วเปรียบเทียบผลลัพธ์ของ :version
คำสั่ง
argv[0]
เพื่อตัดสินใจพฤติกรรมของมัน มันเป็นกลอุบายทั่วไป AFAIK บางครั้ง GCC และ Bash ก็ทำได้เช่นกัน
vim -R <file>
อนุญาตให้เขียนด้วย :w!
vim -c ":set nomodifiable" <file>
ป้องกันผู้ใช้จากการเปลี่ยนแปลงไฟล์ในบัฟเฟอร์ แต่ผู้ใช้สามารถทำให้บัฟเฟอร์สามารถแก้ไขได้ด้วย :set modifiable
คุณสามารถใช้
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
เพื่อป้องกันไม่ให้ผู้ใช้ปิด "nomodifiable" และอนุญาตให้ผู้ใช้ออกจากการกด q
. แต่จากนั้นผู้ใช้จะไม่สามารถเข้าสู่โหมดคำสั่งได้เลยซึ่งอาจเป็นหรือไม่ใช่สิ่งที่คุณต้องการ
คุณสามารถเปิดไฟล์โดยใช้คำสั่ง less:
less <file>
หากต้องการดูไฟล์ในสภาพแวดล้อมที่เหมือนเป็นกลุ่ม แต่ไม่มีความสามารถในการเปลี่ยนไฟล์
less
แม้ว่าในขณะที่ @nxdrvr ชี้ให้เห็นคุณสามารถกด โวลต์ ปุ่มเพื่อเปิดไฟล์ในโหมดที่แก้ไขได้ใน vi
ติดตามคำตอบที่ได้รับการยอมรับเล็กน้อย: คุณสามารถใช้นามแฝงนี้ในเชลล์เพื่อลดคำสั่งเป็นคำสั่งเดียว ตัวอย่างเช่นใน bash คุณสามารถใส่สิ่งต่อไปนี้ใน. bashrc ของคุณ:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(กระสุนที่แตกต่างกันจะมีรูปแบบที่แตกต่างกันสำหรับการทำสิ่งนี้ แต่คุณได้รับแนวคิด)
ฉันจะเพิ่มสิ่งนี้เป็นความคิดเห็นเพื่อตอบกลับคำตอบที่ยอมรับ แต่ดูเหมือนจะเป็นไปไม่ได้ที่จะมีบล็อก "รหัส" หลายบรรทัดในความคิดเห็นและ (ในทุบตีอยู่ดี) รหัสข้างต้นไม่จำเป็นต้องเป็นจริง แยก 3 บรรทัด
หากต้องการดูไฟล์โดยไม่สามารถแก้ไขได้:
cat <file> | less
ใน less
คุณสามารถไปที่ "แก้ไขโหมดไฟล์" โดยกดปุ่ม โวลต์ สำคัญ. แต่คุณไม่สามารถแก้ไขอินพุตมาตรฐานได้ดังนั้นการวางเอาต์พุตของ cat <file>
ให้น้อยลงหยุด less
จากไปที่โหมด 'แก้ไข' เมื่อกด 'v'
สำหรับเป็นกลุ่มวิธีเดียวกัน
cat <file> | vim -
v
ข้อเสนอแนะ ดี
cat
. เพียงใช้ <FILENAME less
.
<file> less
จะให้ข้อผิดพลาดฉันสมมติว่าคุณหมายถึง less <file>
แต่ตามที่อธิบายในคำตอบเมื่อใช้ less
โดยตรงผู้ใช้สามารถกด โวลต์ คีย์และเข้าสู่โหมดแก้ไข การเป่า cat
ไปยัง less
หยุดสิ่งนี้ไม่ให้เกิดขึ้น
less < FILENAME
ซึ่งทำให้คุณ "ไม่สามารถแก้ไขอินพุตมาตรฐาน" เมื่อคุณกด V . ในทำนองเดียวกันกับ Vim: vim - < FILENAME
.
สำหรับ emacs คุณยังสามารถใช้ มุมมองโหมด .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
หรือทางเลือกภายในอาคารผู้โดยสาร:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
หรือคุณสามารถใช้ของฉัน สคริปต์ wrapper
ใน emacs คุณสามารถทำได้
emacs FILE -f view-mode
ใช้การไฮไลต์ไวยากรณ์ ไม่เพียงแค่เปิดไฟล์เป็นบัฟเฟอร์แบบอ่านอย่างเดียว คำสั่งบางคำเช่น I-search สามารถเข้าถึงได้โดยไม่ต้องมีปุ่มควบคุมในโหมดนี้
การส่งไฟล์ไปยัง std out อาจยอมรับได้ตามขนาดของไฟล์
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
ฉันจะไม่ทิ้งคำตอบของผู้ใช้ที่นี่ แต่ฉันต้องการที่จะเพิ่มข้อมูลเพิ่มเติมเกี่ยวกับ Read-only Mode
ไฟล์. ตามเอกสาร Oreilly โหมดอ่านอย่างเดียว จะมีบางครั้งที่คุณต้องการดูไฟล์ แต่ต้องการปกป้องไฟล์นั้นจากการกดแป้นและการเปลี่ยนแปลงโดยไม่ตั้งใจ (คุณอาจต้องการโทรในไฟล์ที่มีความยาวเพื่อฝึกการเคลื่อนไหวของ vi หรือคุณอาจต้องการเลื่อนดูไฟล์คำสั่งหรือโปรแกรม) คุณสามารถป้อนไฟล์ในโหมดอ่านอย่างเดียวและใช้คำสั่งการเคลื่อนไหว vi ทั้งหมด แต่คุณจะไม่สามารถเปลี่ยนไฟล์ได้
หากต้องการดูไฟล์ในโหมดอ่านอย่างเดียวให้ป้อน:
$ vi -R file
หรือ:
$ view file
(คำสั่ง view เช่นคำสั่ง vi สามารถใช้ตัวเลือกบรรทัดคำสั่งใดก็ได้เพื่อเลื่อนไปยังตำแหน่งที่ระบุในไฟล์) หากคุณตัดสินใจที่จะแก้ไขไฟล์คุณสามารถแทนที่โหมดอ่านอย่างเดียวโดย การเพิ่มเครื่องหมายอัศเจรีย์ในคำสั่ง write:
:w!
or:
:wq!
หากคุณมีปัญหาในการเขียนไฟล์
สำหรับการอ้างอิงต่อไป ที่นี่