ฉันสามารถใช้แบบอักษรที่ไม่ใช่แบบโมโนสเปซใน Vim หรือ gVim ได้หรือไม่?


32

มีวิธีใดที่จะใช้แบบอักษรที่ไม่ใช่แบบ monospace อย่างใดอย่างหนึ่งvimหรือgvimไม่?

ฉันพยายามเปลี่ยนแบบอักษรสำหรับ gVim ด้วย:

:set guifont=Dejavu\ Serif\ 12

แต่นี่ทำให้ฉันได้ผลลัพธ์ที่น่าเกลียดบ้าง:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้รับผลลัพธ์เดียวกันถ้าฉันใช้เมนู (แก้ไข -> เลือกแบบอักษร)

:help guifont พูดว่า:

Note that the fonts must be mono-spaced (all characters have the same
width).  An exception is GTK 2: all fonts are accepted, but
mono-spaced fonts look best.

ดังนั้นฉันคิดว่าผลลัพธ์ข้างต้นถือเป็น "ไม่ได้ดูดีที่สุด"? สามารถปรับปรุงให้ดีขึ้นได้ไหม?

ฉันยังลองตั้งค่าฟอนต์ที่ไม่ใช่แบบ monospace ใน terminal ของฉัน ( xterm) แต่ดูเหมือนจะมีเอฟเฟกต์เดียวกัน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่รังเกียจที่จะใช้เทอร์มินัลอีมูเลเตอร์อื่นสำหรับ btw นี้


ดูเหมือนว่าได้รับคำตอบแล้วที่นี่: superuser.com/questions/357571/…
guido

1
@guido ฉันไม่เห็นคำตอบที่นั่น ... คำตอบที่ได้รับการโหวตมากที่สุดเป็นเพียงคำอธิบายว่าแบบอักษรคืออะไร (ไม่ใช่คำตอบ) และ "คำตอบ" อื่น ๆ นั้นยิ่งแย่ลง ...
Martin Tournoij

คำตอบ:


25

ฉันพบmltermซึ่งรองรับสิ่งนี้ นอกเหนือจากเทอร์มินัลในตัวของ Emacs (คำศัพท์ Mx) นี่เป็นเทอร์มินัลเดียวที่ฉันพบที่รองรับสิ่งนี้
ฉันพบว่าmltermทำงานได้ดีกว่า Emacs เนื่องจากการตั้งค่าอัตราส่วน sceen และคุณยังหลีกเลี่ยงการเรียกใช้ Vim ภายในเซสชันของ Emacs (ฉันไม่แน่ใจด้วยซ้ำว่าได้รับอนุญาตตามกฎหมาย)

ภาพหน้าจอ (ดูน่าเกลียดเว้นแต่คุณเปิดขนาดเต็มเนื่องจากการปรับขนาดในเบราว์เซอร์):

ป้อนคำอธิบายรูปภาพที่นี่

มันต้องมีการกำหนดค่าความรักแม้ว่า หลังจากเริ่มกดCtrl+ กลางคลิกที่ใดก็ได้สิ่งนี้จะเปิดหน้าจอกำหนดค่า ฉันตั้งค่าตัวเลือกเหล่านี้

ในแท็บแบบอักษร:

  • ทำเครื่องหมายที่ "ต่อต้านนามแฝง"
  • ตรวจสอบ "ความกว้างคอลัมน์แปรผัน"; นี่คือ "คุณสมบัติที่สำคัญ" ที่หายไปจากเทอร์มินัลอีมูเลเตอร์อื่น ๆ ส่วนใหญ่
  • ตั้งค่าฟอนต์เป็น "DejaVu Sans Book 16" (หรืออะไรก็ได้ที่คุณต้องการ)
  • ตั้งค่า "อัตราส่วนหน้าจอต่อขนาดตัวอักษร" เป็น 60; นี่เป็นรายการเกี่ยวกับความกว้างของเทอร์มินัลหากคุณไม่ทำเช่นนี้คุณจะใช้ขนาดหน้าจอประมาณ 50% เท่านั้น ค่าที่ดีที่สุดสำหรับสิ่งนี้ขึ้นอยู่กับแบบอักษรที่ใช้ดังนั้นลองทดสอบ ...

หน้าจอการกำหนดค่าคลิกขวาดูเหมือนว่าจะมีขุยบ้างฉันก็ทำการแก้ไข~/.mlterm/vaafontเนื่องจากไม่ได้รับการอัพเดต:

ISO10646_UCS4_1 = 22,DejaVu Sans 18;21,DejaVu Sans 16;16,DejaVu Sans 16

และของฉัน~/.mlterm/main(นี่คือการตั้งค่าที่ฉันตั้งไว้ด้านบนรวมถึงการตั้งค่าส่วนตัวบางอย่าง):

type_engine = xft
bel_mode = none
scrollbar_mode = none
fontsize = 22
use_anti_alias = true
use_variable_column_width = true
line_space = 5
use_multi_column_char = true
col_size_of_width_a = 1
screen_width_ratio = 50

มีสิ่งประดิษฐ์บางอย่างที่คาดว่าจะมี แต่การเขียนอีเมลหรือโพสต์เช่นนี้ดูเหมือนว่าจะทำงานได้ค่อนข้างดี!

ฉันสร้างนามแฝงในเชลล์สำหรับสิ่งนี้:

alias pvim mlterm -e vim

ฉันได้สร้างฟังก์ชั่นเล็ก ๆ น้อย ๆ เพื่อลบ chrome UI ส่วนใหญ่:

fun! WriteMode()
    " Disable a lot of stuff
    setlocal nocursorline nocursorcolumn statusline= showtabline=0 laststatus=0 noruler

    " Hack a right margin with number
    setlocal number
    setlocal numberwidth=3

    " White text, so it's 'invisible'
    highlight LineNr ctermfg=15
    " If you're using a black background:
    " highlight LineNr ctermfg=1
endfun

นอกจากนี้ยังมีgoyo.vimซึ่งทำแบบเดียวกัน แต่ไม่ได้ผลดีสำหรับฉันมากเกินไป แม้ว่า YMMV


ฉันต้องใช้ Ctrl + RightClick ไม่ใช่กลางบน Ubuntu 18.04 ด้วย MLTerm จาก repos ของ Ubuntu ไม่เช่นนั้นฉันจะได้กรอบสี่เหลี่ยมแปลก ๆ รอบเคอร์เซอร์ของเมาส์และไม่มีกล่องโต้ตอบ
Ruslan

ดูตลก (และใช้ไม่ได้) เมื่อคุณใช้การแบ่งแนวตั้ง: สกรีนช็อต แต่ต้องคาดหวังจากโซลูชันที่ใช้เทอร์มินัล
Ruslan

7

ไม่รองรับ GUI Vim อย่างแน่นอนและฉันจะประหลาดใจถ้ามีเทอร์มินัลอีมูเลเตอร์จำนวนหนึ่งที่รองรับฟอนต์ตามสัดส่วนในแบบที่คุณต้องการ: มันจะทำลายสิ่งมาตรฐานที่เทอร์มินัลมากเกินไป ใช้ เนื่องจากส่วนต่าง ๆ ของ Unix และสภาพแวดล้อมบรรทัดคำสั่งอื่น ๆ เข้าใจแบบอักษร monospaced จอแสดงผลประเภทนี้จึงไม่สามารถใช้เป็นเทอร์มินัลเอนกประสงค์ดังนั้นผู้พัฒนาเทอร์มินัลจึงต้องทำงานเพิ่มเติมเพื่อผลประโยชน์เพียงเล็กน้อย

อย่างไรก็ตามมีตัวจำลองเทอร์มินัลอย่างน้อยหนึ่งตัวที่ใช้เทคโนโลยีเว็บ ( Ajaxterm ) และเมื่อใช้ HTML / CSS สำหรับการเรนเดอร์จึงเป็นไปได้ที่จะใช้ฟอนต์แบบสัดส่วนโดยใช้ CSS CJS Hayward ได้ทำสิ่งนี้แล้ว แต่ต้องใช้เบราว์เซอร์ที่เก่ามาก

หากคุณต้องใช้ Vim ในเครื่องเทอร์มินัลคุณก็จะได้สิ่งที่คุณต้องการ เพิ่งเตรียมพร้อมสำหรับ hijinx แปลกประหลาดเมื่อคุณใช้คุณสมบัติตามคอลัมน์ใด ๆ (เช่นj, kโหมดภาพบล็อกหรือ'colorcolumn'ตัวเลือก)

อัพเดทตามที่ผู้ถามคำถามดั้งเดิมCarpetsmoker ชี้ให้เห็นในความคิดเห็น Emacs มีการสนับสนุนฟอนต์ตามสัดส่วนที่เหมาะสมและยังรวมถึงเทอร์มินัลอีมูเลเตอร์ ( M-x term) ซึ่งคุณสามารถเรียกใช้ Vim ได้ ผู้ที่ชื่นชอบตัวอักษรที่มีสัดส่วนเฉพาะอาจต้องการดูความชั่วร้ายของ Emacsเพื่อรับประสบการณ์ที่คล้าย Vim ภายใน Emacs


4

แบบอักษรตามสัดส่วนได้รับการสนับสนุนในOni , Neovim GUI ใช้โหมดแสดงภาพ "webgl" เพื่อผลลัพธ์ที่ดีที่สุด

 "editor.renderer": "webgl"

ดูเพิ่มเติมที่https://github.com/onivim/oni/issues/2359


ดูน่าสนใจ! น่าเสียดายที่ฉันไม่สามารถทำให้โครงการนี้ทำงานได้และไม่มีเวลาแก้ปัญหาที่ :-(
Martin Tournoij

มีที่เก็บที่สร้างไว้ล่วงหน้าที่มีgithub.com/onivim/oni/releases
Justin M. Keyes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.