Vim ไม่ใช้ umlauts เป็นอักขระคำ


9

เมื่อฉันเขียนข้อความภาษาเยอรมันที่มีบางสิ่งเช่นabücdอินสแตนซ์และไปdwข้างหน้าข้อความนั้นจะลบเฉพาะabเนื่องจากไม่ได้แปลüว่าเป็นอักขระคำ

เมื่อฉันแก้ไข reStructuredText ฉันมี

iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_

นั่นอธิบายว่าทำไมเครื่องหมายบนสระไม่ได้ถูกทำเครื่องหมาย แต่ฉันไม่เข้าใจว่าสิ่งนี้มาจากไหน เมื่อฉันเพิ่งเปิด gVim นี่ถูกตั้งค่าเป็น

iskeyword=@,48-57,_,192-255

สิ่งนี้มาจากไหน


3
ใส่ในของคุณset encoding=utf-8 .vimrc
cuonglm

ที่มีอยู่แล้วในของฉัน.vim/vimrcและให้ฉัน:set enc? เช่นเดียวกันกับutf-8 fencยังคงไม่ทำงาน
Martin Ueding

หลังจาก:set iskeyword&นั้นüยังไม่ได้รับการยอมรับว่าเป็นส่วนหนึ่งของคำ?
ryuichiro

แสดงเป็น iskeyword ของคุณ ( set iskeyword) มันควรจะเป็นสิ่งที่ชอบหรือ"@,48-57,_,128-167,224-235" "@,48-57,_,192-255"คุณใช้ Vim หรือ Vi หรือไม่? (ค่าเริ่มต้นใน Vi ( "@,48-57,_") ไม่รู้จักü; ค่าเริ่มต้นใน Vim นั้นใช้ได้)
JJoao

1
ผมใช้ gVim iskeyword=@,48-57,_,192-255และมีความ ตอนนี้มันใช้งานได้อย่างน่าอัศจรรย์ใน Vim ที่สดใหม่ นั่นเป็นสิ่งที่แปลกฉันต้องสังเกตอย่างระมัดระวังมากขึ้น
Martin Ueding

คำตอบ:


5

@ตัวละครในiskeywordรวมถึงตัวละครทั้งหมดที่isalpha()(C ฟังก์ชั่น) เป็นจริง; ในการใช้งาน libc ที่ทันสมัย ​​(20 ปีที่ผ่านมา) สิ่งนี้ยังมองหาอักขระ Unicode

การiskeywordใช้งานครั้งที่สองของคุณ97-122(az) และ64-90(AZ) ซึ่งไม่รวมตัวแปรทั้งหมดที่มีการกำกับการออกเสียงต่าง ๆ (เช่น umlaut / diaeresis / trema)

ดังนั้นการแก้ปัญหาคือการเปลี่ยน97-122และมี64-90@

ขี้ขลาดนี้iskeywordมาจากไฟล์ไวยากรณ์ LISP; rstไฟล์ไวยากรณ์รวมถึงพวงของไฟล์ไวยากรณ์อื่น ๆ สำหรับไฮไลต์บล็อกรหัส

โชคดีที่คุณสามารถตั้งค่าภาษาที่จะรวมกับg:rst_syntax_code_listตัวแปร ค่าเริ่มต้นคือ:

let g:rst_syntax_code_list = ['vim', 'java', 'cpp', 'lisp', 'php', 'python', 'perl']

เนื่องจากไม่น่าที่คุณจะต้องเน้นไวยากรณ์ LISP ในไฟล์ reStructuredText ของคุณคุณอาจจะสามารถลบออกได้ เพียงเพิ่มที่ใดก็ได้ในไฟล์ vimrc ของคุณหากมีการกำหนดไว้ไฟล์ไวยากรณ์จะใช้ค่านั้นแทนการกำหนดของมันเอง

ในความคิดของฉันคุณอาจต้องการใช้:

let g:rst_syntax_code_list = []

เพราะใครจะรู้ว่าผลข้างเคียงที่ขี้ขลาดของไฟล์อื่นทำให้เกิด ...


เจ๋งขอบคุณ! สิ่งนี้ไม่ได้เกิดขึ้นกับฉันบน Ubuntu จนถึงตอนนี้เพิ่งเกิดขึ้นที่นี่ใน Fedora 22 อาจเป็นไฟล์ไวยากรณ์ของพวกเขาที่แตกต่างกันเล็กน้อย มันใช้งานได้แล้ว
Martin Ueding

คำใบ้ที่มี@ตัวอักษรและตัวเลขมีประโยชน์จริง ๆ
Zelphir Kaltstahl

1

หากหนึ่งอินไลน์ไวยากรณ์จากภาษาอื่น ๆ ในตัวอย่างเช่นไฟล์ markdown การตั้งค่าของภาษาเหล่านั้นดูเหมือนจะแทนที่การตั้งค่าสำหรับไวยากรณ์มาร์คดาวน์ หนึ่งสามารถตรวจสอบว่าเป็นกรณีที่ใช้:

:verbose set iskeyword?

เพื่อแก้ไขปัญหานี้หนึ่งสามารถกำหนดคำสั่งอัตโนมัติที่จะเรียกใช้ในแต่ละครั้งที่หนึ่งเข้าสู่ไฟล์ markdown (และอาจภาษาอื่น ๆ เช่นกัน):

autocmd BufEnter,BufNewFile *.md set iskeyword=38,42,43,45,47-58,60-62,_,@

การนำสิ่งนี้มา.vimrcแก้ไขปัญหาให้ฉัน ผมใช้vim-pandocไวยากรณ์และภาษา inlined รวมracket, python, shและบางส่วน ฉันคิดว่าไม่จำเป็นต้องกำหนดคำสั่งอัตโนมัติสำหรับการปล่อยไฟล์ markdown เพราะเมื่อคุณป้อนไฟล์ของภาษาอื่น ๆ ไฟล์ไวยากรณ์ของพวกเขาควรตั้งค่าคำหลักของพวกเขาหากฉันเข้าใจอย่างถูกต้อง

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