ฉันจะรับเคอร์เซอร์บล็อกใน Vim ในเทอร์มินัล Cygwin ได้อย่างไร


46

ฉันเคยมีเคอร์เซอร์บล็อกในโหมดปกติใน Vim สิ่งนี้สมเหตุสมผลกับกระบวนทัศน์ Vim; เมื่อคุณกดxจะชัดเจนว่าอักขระใดจะถูกลบ

ฉันได้ติดตั้ง Cygwin บนคอมพิวเตอร์ Windows แต่เมื่อฉันใช้ Vim ในเทอร์มินัลฉันจะได้Iเคอร์เซอร์แม้ในโหมดปกติ ฉันจะทำให้เคอร์เซอร์เป็นบล็อกแทนได้อย่างไร

คำตอบ:


72

คำถามนี้ในรายชื่อผู้รับจดหมาย Cygwin ตอบคำถามโดยตั้งค่าตัวแปรลับบางอย่างให้กับลำดับการหลีกเลี่ยงที่เหมาะสม เพิ่มลงในของคุณ.vimrc:

let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"

2
สิ่งนี้ใช้ได้กับฉันเมื่อใช้ mintty เพื่อ ssh ไปยังเซิร์ฟเวอร์ linux
zzapper

2
ขอบคุณมาก. ต้องรักทางออกที่สะอาดที่ทำงานใน 2 กรณีที่น่ารำคาญที่สุด :)
rld

2
ดี น่าเสียดายที่ใน ConEmu จะมีผลกับเคอร์เซอร์ตลอดทั้งเซสชัน ที่กล่าวว่ามันทำงานได้ตามที่คาดไว้ในกลุ่ม นอกจากนี้ยังทำงานได้ดีในโปรแกรมจำลองเทอร์มินัลของ cygwin แต่ใครใช้สิ่งนั้น ;)
George Marian

เกือบจะสมบูรณ์แบบ ... แต่เมื่อออกจากโหมดแทรกมันจะกลับไปเป็นเคอร์เซอร์บรรทัดจนกว่าคุณจะย้ายเคอร์เซอร์ไปในทิศทางใดทิศทางหนึ่ง
โจ Coder

1
ทำงานให้ฉันในเวอร์ชัน Vim ที่ติดตั้งโดยอัตโนมัติด้วย Cmder ขอขอบคุณ!
Bangash

32

มีการตั้งค่าสำหรับสิ่งนั้นในโปรแกรมจำลอง cygwin:

คลิกขวาที่แถบชื่อเรื่องของหน้าต่าง> ตัวเลือก> ลักษณะ> เคอร์เซอร์ตัวเลือก> ปุ่มตัวเลือกเคอร์เซอร์


เมื่อต้องการทำให้เสร็จสมบูรณ์ตัวเลือกประเภทนี้จะเหมือนกับหน้าต่างเทอร์มินัลหน้าต่างอื่น ๆ ซึ่ง cygwin คือ
mveroone

6
Pro: ฉัน.vimrcสามารถใช้งานร่วมกับ Linux หรือ Windows .vimrcได้มากกว่า คอนดิชั่น: ตอนนี้ฉันมีเคอร์เซอร์บล็อกในโหมดแทรก, เมื่อฉันต้องการIเคอร์เซอร์ในโหมดนั้น. +1
Kazark

5
คำถามที่ถามเกี่ยวกับการควบคุมเคอร์เซอร์ใน VIM แต่คำตอบนี้มีผลกับเคอร์เซอร์สำหรับเซสชันเชลล์ทั้งหมดทั้งที่พร้อมรับคำสั่งและใน VIM
David Alpert

1
@EdRandall นี่เป็นคำถามเกี่ยวกับ Cygwin terminal และ vim คำตอบนี้เกี่ยวข้องกับด้าน Cygwin ของคำถาม
jared

1
สิ่งนี้ไม่ตอบคำถามทั้งหมด Vim ใช้เคอร์เซอร์ 2 ประเภท ในโหมดปกติภาพหรือคำสั่งมันเป็นบล็อก ในโหมดแทรกมันเป็นแถบแนวตั้ง คำแนะนำเหล่านี้มีไว้สำหรับการเปลี่ยนแปลงแบบขายส่งในโปรแกรมจำลองเทอร์มินัลเฉพาะ (cygwin) แต่ส่วนใหญ่ควรมีสิ่งที่คล้ายกัน ดังนั้นจะมีผลกับเคอร์เซอร์ทุกที่ในเทอร์มินัลและที่สำคัญไม่ได้เลียนแบบการทำงานของเคอร์เซอร์ของ vim
George Marian

2

สร้างไฟล์~/.minttyrcเพิ่มบรรทัดด้านล่างลงไป

CursorType=block

จากนั้นเปิดตัวminttyใหม่ซึ่งเป็นเทอร์มินัลเริ่มต้นของ Cygwin


0

หรือคุณสามารถสร้างไฟล์แบตช์:

 %SYSTEMDRIVE%\cygwin\bin\mintty.exe ^
        -s 132,50 -o ScrollbackLines=10000 ^
        -o BackgroundColour=54,54,54 ^
        -o Transparency=High -o OpaqueWhenFocused=yes ^
        -o CursorColour=Green -o CursorType=block -o CursorBlinks=no ^
        -o Font=Consolas -o FontHeight=10 ^
        /bin/env CHERE_INVOKING=1 /bin/bash -l -i

และเรียกใช้มัน

หากคุณไม่ชอบเคอร์เซอร์ที่กะพริบในหน้าต่างคำสั่ง DOS ก็ใช้%COMSPEC%แทน/bin/env/...และต้องแปลกใจ

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