คำถามติดแท็ก vimscript

ภาษาสคริปต์ฝังอยู่ใน Vim สามารถใช้ปรับแต่ง Vim ให้เหมาะกับความต้องการของคุณและสร้างปลั๊กอินได้ เรียกอีกอย่างว่า VimL


2
คุณจะรู้ได้อย่างไรว่าตัวแปรใดที่ได้รับการกำหนดครั้งล่าสุด
ฉันกำลังพยายามตั้งค่าg:netrw_list_hideและดูเหมือนจะไม่ทำงาน ไม่ว่าสิ่งที่ผมตั้งในของฉันมันก็มีค่า.vimrc ,^\.\.\=/\=$เฉพาะในกรณีที่ฉันจัดหาvimrcไฟล์ของฉันอีกครั้งมันจะเก็บค่าที่ถูกต้อง ฉันจะแก้ไขข้อบกพร่องนี้ได้อย่างไร ฉันเดาว่ามีปลั๊กอินบางอย่างที่ตั้งค่าตัวแปรนั้นหรือไม่? อาจเป็นไปได้หลังจากที่ฉันvimrcถูกโหลดดังนั้นฉันต้องการดูว่ามันถูกตั้งไว้ที่ไหน

1
รับหน้าต่าง / บัฟเฟอร์ / แท็บปัจจุบันใน Vimscript
ในไพ ธ อนเมื่อใช้โมดูล vim มันง่ายอย่างไม่น่าเชื่อที่จะได้หน้าต่าง / บัฟเฟอร์ / แท็บปัจจุบัน: current_win = vim.current.window current_buff = vim.current.buffer current_tabpage = vim.current.tabpage คำถามของฉันคือคุณจะทำสิ่งนี้ใน VimL / Vimscript บริสุทธิ์และวัตถุชนิดใดที่ถูกส่งคืน? ฉันไม่สามารถพบสิ่งนี้ได้ทุกที่ในwindows.txt( :h windows)

3
ฉันจะระบุแหล่งที่มาของการเลือก vimscript ได้อย่างไร?
หากฉันมี vimscript สองบรรทัดที่ฉันต้องการทดสอบก่อนที่จะใส่ vimrc ของฉันมันเป็นไปได้หรือไม่ที่จะสามารถเลือกภาพได้ ฉันเหนื่อย ทำการเลือกด้วยสายตาvจากนั้นจึงทำการเลือก ฯลฯ :'<,'>so แต่เป็นกลุ่มให้ข้อผิดพลาด ไม่อนุญาตให้ใช้ช่วง ด้วย :'<,'>w | so จะช่วยให้ ใช้! เพื่อเขียนบัฟเฟอร์บางส่วน ฉันจะแหล่ง vimscript ที่เลือกด้วยสายตาได้อย่างไร

2
สิ่งที่ต้องติดตามเพื่อสร้างปลั๊กอินกลุ่ม?
ดังนั้นคำถามของฉันง่าย เป็นความคิดที่ดีหรือไม่ที่จะเรียนรู้การเขียนสคริปต์เป็นกลุ่มเพื่อสร้างเสียงเรียกเข้าหรือเราควรใช้ภาษาอื่นที่เป็นที่ยอมรับมากกว่านั้น ตัวอย่างเช่นลิงค์นี้เปิดวิดีโอ YouTube ซึ่งแสดงวิธีใช้ Python เพื่อสร้างปลั๊กอินกลุ่ม สคริปต์ที่เป็นกลุ่มจะไม่เป็นประโยชน์อย่างสิ้นเชิงเว้นแต่จะมีหนึ่งตั้งใจที่จะสร้างปลั๊กอินที่เป็นกลุ่มบางอย่าง ดังนั้นมีสิ่งใดที่ไม่สามารถทำได้ยกเว้นว่าใช้สคริปต์ vim เท่านั้น
12 vimscript 

1
ถ้าอื่น endif oneliner
ฉันมีออนไลเนอร์ตัวนี้อยู่vimrcแต่ไม่ได้ผล: if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif VIM พูดว่า: E518: Unknown option: else คุณสามารถช่วยฉันได้ไหม ?
11 vimscript 

2
มีวิธีการตรวจสอบว่าฉันบันทึกใน vimscript หรือไม่?
มีอะไรที่เหมือนกันไหม eval("is_recording()") ฉันจะโทรหา vimscript ของฉันเพื่อดูว่าฉันกำลังบันทึกแมโครหรือไม่ ฉันจะคิดว่างานนี้: eval("mode(1)") แต่นั่นเพิ่งกลับ"n"มา ไม่แน่ใจว่ามันสำคัญหรือไม่ แต่ฉันใช้ neovim ดังนั้นถ้าเป็นพิเศษกับ neovim มันก็ใช้ได้

2
เป็นไปได้หรือไม่ที่จะใช้ผู้รับมอบสิทธิ์หรือส่งผ่านฟังก์ชันเป็นอาร์กิวเมนต์ใน Vimscript
ฉันกำลังพยายามสร้างปลั๊กอินขนาดเล็กเพื่อเรียนรู้ vimscript เป้าหมายของฉันคือการสร้างฟังก์ชั่นบางอย่างที่ประมวลผลข้อความที่เลือกและแทนที่ด้วยผลลัพธ์ สคริปต์มีรายการดังต่อไปนี้: สองฟังก์ชั่นการประมวลผลข้อความ:พวกเขาใช้สตริงเป็นพารามิเตอร์ส่งคืนสตริงซึ่งควรใช้เพื่อแทนที่ข้อความต้นฉบับ สำหรับตอนนี้ฉันมีเพียงสองคน แต่อาจมีอีกมากในอีกไม่กี่ครั้ง ฟังก์ชั่นที่ได้รับข้อความที่เลือก:ซึ่งดึงการเลือกล่าสุดและส่งคืน ฟังก์ชั่น wrapper:ซึ่งเรียกฟังก์ชั่นการประมวลผลได้รับผลและแทนที่การเลือกเก่าด้วยผลลัพธ์นี้ ตอนนี้ฟังก์ชั่น wrapper ของฉันดูเหมือนว่า: function! Wrapper() " Get the string to insert let @x = Type1ProcessString(GetSelectedText()) " remove the old selection normal gvd " insert the new string normal "xp endfunction และฉันต้องสร้างเสื้อคลุมตัวที่สองแทนที่บรรทัด 3 ด้วย let @x = Type2ProcessString(GetSelectedText()) ฉันต้องการให้ฟังก์ชั่น wrapper ของฉันพารามิเตอร์ที่มีฟังก์ชั่นกระบวนการในการดำเนินการและใช้การโทรทั่วไปในบรรทัดที่ …

3
วิธีการ grep ในเอาต์พุตคำสั่ง ex
หนึ่งค้นหารูปแบบในเอาต์พุตคำสั่ง ex ได้อย่างไร ตัวอย่างเช่นวิธีค้นหารูปแบบชื่อไฟล์ในผลลัพธ์ของ:scriptnamesคำสั่ง ในความช่วยเหลือสำหรับทุกรสชาติgrepและvimgrepมีเพียง{file}เป็นสถานที่ที่จะทำการค้นหา
11 vimscript 

3
ฉันจะย้อนกลับสตริงด้วยสคริปต์เป็นกลุ่มได้อย่างไร
ฉันพยายามที่จะย้อนกลับสตริงเพื่อที่จะกลายเป็น'abc defg hij' 'jih gfed cba'ทางออกที่ฉันมาด้วยคือ join(reverse(split(l:text, '.\zs')), '') มีวิธีแก้ปัญหาที่สง่างามกว่านี้หรือฉันควรยึดติดกับสิ่งที่ฉันคิด


1
ป้องกันการรีเฟรชหน้าจอจนกว่าฟังก์ชั่นจะเสร็จสมบูรณ์
ฉันมีฟังก์ชั่นที่เคลื่อนไหวและส่งออกข้อความจำนวนมากไปยังบัฟเฟอร์ vim ปัจจุบันและเมื่อฉันเรียกใช้การเห็นสิ่งที่เกิดขึ้นด้วยความเร็วที่ทำให้ไม่เห็นนั้นเป็นสิ่งที่ทำให้สับสน ฉันจะตรึงหน้าจอจนกว่าฟังก์ชันจะเสร็จสิ้นได้อย่างไร นี่คือฟังก์ชันที่เป็นปัญหา: function! MakeChoices() :let save_view = winsaveview() let start = line('.') "Locate previous *choice. (b=backwards, W=nowrap, n=doNot move cursor) let choiceStartLine = search('^*choice', 'bW') if !choiceStartLine echo "No *choice found. (*choice must not be indented. This is to avoid finding *choice blocks nested in another *choice …
10 vimscript 

1
ดำเนินการเนื้อหาบัฟเฟอร์เป็น vimscript
ฉันมีnofileบัฟเฟอร์ที่มี vimscript และฉันต้องการดำเนินการ อย่างไรก็ตาม:so % จะไม่ทำงานเนื่องจากต้องใช้ไฟล์ที่บันทึกไม่ใช่บัฟเฟอร์ มีคำสั่ง vim ให้ทำตามค่าเริ่มต้นหรือไม่? หากไม่สามารถสร้างฟังก์ชั่นที่ทำสิ่งเดียวกันได้หรือไม่?

1
เป็นไปได้หรือไม่ที่จะสร้างคำสั่ง "set" ที่กำหนดเองในไฟล์ rc ของฉันและเรียกพวกมันจาก modeline?
ฉันเพิ่งถามคำถามที่ฉันได้เรียนรู้ว่ามันเป็นไปไม่ได้ที่จะผ่านอะไรยกเว้นพารามิเตอร์ไป:setในแบบจำลองเป็นกลุ่ม ฉันเข้าใจถึงความกังวลด้านความปลอดภัย แต่ฉันสงสัยว่าจะไม่มีวิธีแก้ไขปัญหานี้อีกหรือไม่ คำถามล่าสุดเกี่ยวกับ SOเกี่ยวกับการตั้งกระบวนการขนาดใหญ่ของพารามิเตอร์เพื่อให้สอดคล้องกับมาตรฐานการเข้ารหัสมีฉันคิดมันจะเป็นไปได้ที่จะกำหนดเป็น "กลุ่ม" ของสิ่งที่อยู่ในแฟ้ม rc ของฉันที่สามารถเปิดหรือปิดจาก modeline หรือไม่ ยกตัวอย่างโค้ดหลอก แต่มีวิธีสร้างฟังก์ชั่นที่ถูกทริกเกอร์จากพารามิเตอร์ที่ตั้งไว้หรือไม่? set_function! codestyle() if &1 == 'psr-2' set ts=4 set sw=4 endfi if &1 == 'drupal7' set ts=2 set sw=2 iab D8 Drupal 8 endif endset_function สิ่งนี้สามารถถูกทริกเกอร์โดย modeline เช่น # vim: codestyle=psr-2 นี่อาจเป็นวิธีที่คล้ายกับการจับคู่ประเภทไฟล์ แต่อนุญาตการแทนที่ด้วยตนเอง นอกจากนี้ยังจะตั้งค่าสภาพแวดล้อมในรูปแบบที่กำหนดไว้ล่วงหน้าอื่น ๆ หลีกเลี่ยงปัญหาด้านความปลอดภัยของการมีไฟล์ที่เรียกใช้คำสั่งโดยพลการอื่น ๆ …


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