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

Evil Mode เป็นเลเยอร์การจำลอง Vim สำหรับ Emacs

5
วิธีการรักษาขีดล่างเป็นส่วนหนึ่งของคำ?
ฉันใช้evilโหมดEmacs + เมื่อฉันวางตำแหน่งเคอร์เซอร์บนe(ในสถานะปกติ) ในก้อนของข้อความเช่นabc_def_ghi, ciw(คำภายในการเปลี่ยนแปลง) การเปลี่ยนแปลงเพียงส่วนหนึ่งของสตริงในขณะที่กลุ่มจะเปลี่ยนทั้งหมดdefabc_def_ghi ฉันevilจะบังคับให้ปฏิบัติกับขีดเส้นใต้ตามที่ Vim ทำ (เช่นเป็นส่วนหนึ่งของคำ) ได้อย่างไร?

1
Emacs ไม่ได้อยู่ในโหมด Visual ของ Evil กับคลิปบอร์ดของระบบปฏิบัติการทุกอัน
ติดตั้ง: GUI รุ่น GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) ปี 2015-07-25 บน KAEL รวบรวมจาก EmacsW64 Package Evil ใช้ Evil เวอร์ชันล่าสุดจาก MELPA Windows 7 x64 บิต สถานการณ์: ทดสอบด้วยการกำหนดค่า Emacs ว่างเปล่าที่เปิดใช้งาน Evil เท่านั้น ฉันคัดลอกข้อความบางส่วนจากแอปพลิเคชัน Windows จากนั้นผมวางลงภายใน Emacs ด้วยnormal mode pฉันเห็นข้อความ จากนั้นฉันเปลี่ยนเป็นแอปพลิเคชัน Windows เลือกข้อความอื่นคัดลอก สลับกลับไป Emacs visual modeสายตาเลือกข้อความและวางภายใน แต่ข้อความภายในภูมิภาคจะไม่ถูกแทนที่ด้วยข้อความจากคลิปบอร์ดของ Windows นี่ไม่ใช่ Vim เริ่มต้น ฉันจะกำหนดค่าข้อความที่ถูกแทนที่ด้วยแอคชันการคัดลอกล่าสุดได้อย่างไรในกรณีนี้คลิปบอร์ด Windows

2
ฉันจะเลิกพฤติกรรมใน Evil ได้อย่างไรเหมือนกับ Vim
พฤติกรรมการเลิกทำที่เป็นค่าเริ่มต้นใน Evil นั้นหยาบเกินไปเพราะจะพิจารณาสิ่งใด ๆ ที่เกิดขึ้นระหว่างการเข้าสู่โหมดแทรกและปล่อยให้มันเป็นการดำเนินการแก้ไขเดียว เมื่อคุณป้อนทั้งย่อหน้าของข้อความในระหว่างการแทรกหนึ่งครั้งจากนั้นดำเนินการเลิกทำทั้งย่อหน้าจะถูกลบออก ในทางตรงกันข้าม Vim จะเริ่มการเลิกทำหน่วยใหม่เมื่อใดก็ตามที่คุณเลื่อนเคอร์เซอร์ในโหมดแทรกโดยใช้วิธีอื่นนอกเหนือจากการป้อนข้อความ Evil มีตัวแปรการปรับแต่งที่สามารถใช้เพื่อรับประวัติเลิกทำที่ละเอียดยิ่งขึ้น: (setq evil-want-fine-undo t) ด้วยการตั้งค่านี้ Evil จะเริ่มการเลิกทำหน่วยใหม่เมื่อเคอร์เซอร์ถูกย้ายในโหมดแทรกเช่นเดียวกับ Vim อย่างไรก็ตามการตั้งค่านี้ยังยุ่งกับวิธีการจัดการการแทนที่: หากคุณแทนที่คำที่ใช้cwคุณต้องเลิกทำสองครั้งเพื่อคืนค่าคำเดิม: หนึ่งครั้งสำหรับการลบคำใหม่และอีกครั้งสำหรับการแทรกคำเดิม สิ่งนี้ไม่สอดคล้องกับ Vim และไม่สมเหตุสมผลเนื่องจากการแทนที่ควรเป็นแบบอะตอมมิก คำถาม: ฉันจะกำหนดค่า Evil และ undo-tree ได้อย่างไรเพื่อรับพฤติกรรมการยกเลิกของ Vim

2
ฉันจะปิดเครื่องหมายตัวหนอนของ Spacemacs ในบรรทัดว่างได้อย่างไร
ฉันเพิ่งติดตั้งSpacemacsส่วนใหญ่เป็นค่าเริ่มต้นที่ดี หนึ่งค่าเริ่มต้นฉันไม่พอใจเกี่ยวกับการที่มันทำให้ตัวหนอนบนบรรทัดว่างในไฟล์ ฉันได้ลองใส่(setq vi-tilde-fringe nil)และ(setq indicate-empty-lines nil)เข้าไปข้างในdotspacemacs/user-configฟังก์ชั่นซึ่งดูเหมือนจะไม่มีผล ฉันจะกำจัดตัวหนอนที่ยุ่งเหยิงเหล่านี้ทั้งหมดได้อย่างไร?
16 evil  spacemacs  fringe 

1
คำแนะนำเกี่ยวกับวิธีการทำงานกับ Evil Mode
ฉันกำลังพิจารณาที่จะให้โอกาสกับ Evil Mode ฉันได้ทำการค้นหาอย่างกว้างขวางเพื่อค้นหาว่าคุณใช้มันอย่างไรและทุกคนแค่แชร์การปรับแต่งของพวกเขา สิ่งที่ฉันไม่เข้าใจคือเมื่อคุณติดตั้งและเปิดใช้งานโหมดชั่วร้ายจะใช้ปุ่มของ Vim โดยอัตโนมัติหรือคุณต้องปรับแต่งให้เหมาะกับความต้องการของคุณ หากต้องการเปิดใช้งานอีกทางเมื่อเปิดใช้งานฉันควรเปลี่ยนสิ่งใดหรือไม่ อีกหนึ่งสิ่ง. ใน Emacs เมื่อคุณติดตั้งแพ็คเกจคุณควรใช้ปุ่มเฉพาะสำหรับงานบางอย่าง ตัวอย่างเช่นใน AUCTeX คุณใช้C-c C-cในการคอมไพล์ดังนั้นในโหมด Evil คุณใช้คีย์ใดในแพ็คเกจ? คุณต้องปรับแต่งมันสำหรับทุกแพ็คเกจหรือไม่
14 evil 

3
มีเทียบเท่ากับคำสั่งทดแทนสไตล์ sed จากเสียงเรียกเข้า?
สิ่งหนึ่งที่ฉันพลาดจากเสียงเรียกเข้าคือสามารถพิมพ์คำสั่งการแทนที่ที่จะทำงานผ่านหลายบรรทัดตัวอย่างเช่น: :/begin/,/end/s/foo/bar/g คำสั่งดังกล่าวใช้แทน "foo" สำหรับ "bar" ที่ขึ้นต้นด้วยบรรทัดแรกที่มี "start" และลงท้ายด้วยบรรทัดถัดไปหลังจากนั้นจะมี "end" มีวิธีการทำสิ่งที่คล้ายกันใน emacs หรือไม่?

7
Evil: แผนที่ทำหน้าที่เป็นกลุ่ม
ฉันกำลังพยายามที่จะทำให้การทำงานของความชั่วร้ายevil-jump-to-tag, C-]ประพฤติเช่น Emacs M-.ผูกพัน พฤติกรรมปกติดีสำหรับการเรียกดูไฟล์แท็ก แต่ฉันต้องการให้มันทำงานได้ดีกับ Slime's slime-edit-definition, Elisps ' elisp-slime-nav-find-elisp-thing-at-point, Clojures cider-jump-to-var, ฯลฯ ... เหล่านี้โหมดที่สำคัญและอื่น ๆ M-.อีกมากมายได้ถูกผูกไว้เทียบเท่าบางส่วนของการกระโดดให้ละเอียดเพื่อปุ่มลัด เพื่อให้มีพฤติกรรมแบบเดียวกันสำหรับโหมดความชั่วร้ายฉันจำเป็นต้องผูกปุ่มลัดไว้ในเครื่องสำหรับทุกโหมดเหล่านี้หรือเป็นไปได้ที่จะใช้ปุ่มลัดและบอกกับ Emacs ว่าเมื่อใดก็ตามที่กดปุ่มนี้ให้ใช้ฟังก์ชั่น อยู่ในโหมด Emacs?
13 keymap  evil 

1
ความแตกต่างระหว่างแผนที่ความชั่วร้ายปกติรัฐกับแผนที่ชั่วร้ายเคลื่อนไหว
เอกสารสำหรับevil-normal-state-map: Keymap สำหรับสถานะปกติ เอกสารสำหรับevil-motion-state-map: Keymap สำหรับสถานะ Motion Vim มี "โหมดการเคลื่อนไหว" หรือไม่? ในกลุ่มการดำเนินการ:help Normal-modeจะให้เอกสารเกี่ยวกับโหมดที่เป็นกลุ่มในขณะที่บอกฉัน:help Motion-modeE149: Sorry, no help for Motion-mode นอกจากนี้เมื่อการแมปคีย์ในสภาวะชั่วร้ายคำสั่งใดที่ฉันควรใช้ (define-key evil-normal-state-map (kbd <key>) <command>) (define-key evil-motion-state-map (kbd <key>) <command>) ฉันใช้ Spacemace ในกรณีที่เกี่ยวข้อง

2
ฉันจะกระโดดออกจากวงเล็บปิดได้อย่างไร
ฉันใช้spacemacsเพื่อแก้ไขรหัสหลาม เมื่อฉันพิมพ์วงเล็บเปิดวงเล็บปิดจะถูกแทรกให้ฉันโดยอัตโนมัติและเคอร์เซอร์จะอยู่ตรงกลางเพื่อพิมพ์ต่อไป แต่: เมื่อฉันพิมพ์ภายในวงเล็บฉันต้องการวิธีที่รวดเร็วในการกระโดดออกจากพวกเขาและเชื่อมโยงไปถึงหลังจากวงเล็บปิด ตอนนี้ผมเปลี่ยนไปสภาพปกติเลื่อนเคอร์เซอร์หนึ่งหน่วย (เมื่อฉันในตัวละครก่อนวงเล็บปิด) aและจากนั้นก็กลับเข้ามาแทรกรัฐที่มี ฉันจะทำสิ่งนี้ได้อย่างมีประสิทธิภาพมากขึ้นได้อย่างไร

3
เป็นไปได้ที่จะไม่ใช้เลิกทำต้นไม้ในโหมดชั่วร้าย?
ดังนั้นทุกครั้งที่ผมใช้เป็นข้อบกพร่องในการยกเลิกต้นไม้ที่ฉันไม่สามารถทำซ้ำมีดังต่อไปนี้ปัญหาที่รู้จักกัน , รายงานอื่นและReddit ด้าย primitive-undo: Unrecognized entry in undo list undo-tree-canary สิ่งนี้แย่มากและอาจทำให้งานเสียไปหากคุณไม่ได้บันทึกไฟล์เวอร์ชันใหม่ล่าสุด เนื่องจากฉันไม่เคยใช้ฟังก์ชั่นการเลิกทำกิ่งก้านสาขามันเป็นไปได้ไหมที่จะใช้ emacs linear undo กับโหมดความชั่วร้าย? หมายเหตุ: ฉันได้ลองตั้งค่า(global-undo-tree-mode -1)โดยตรงหลังจาก(evil-mode 1)ที่ปิดใช้งานการเลิกทรี แต่การทำซ้ำ (Ctrl-R) ไม่ทำงานหลังจากทำสิ่งนี้

2
โหมดหมายเลขบรรทัดไฮบริดใน emacs?
เป็นไปได้ไหมที่จะแสดงจำนวนสัมบูรณ์ของบรรทัดปัจจุบันแทนที่จะเป็น "0" เมื่ออยู่ในโหมดหมายเลขบรรทัดสัมพัทธ์? บางครั้งสิ่งนี้เรียกว่า "โหมดหมายเลขบรรทัดไฮบริด" แบบนี้: 7 6 this.oscs[i].oscillator.start(); 5 } 4 3 this.bindController(); 2 }; 1 252 factory.stop = function () { <- current line number shows 1 console.log('theremin: now in stop 2'); 2 this.leapController.disconnect(); 3 //this.leapController.removeListener('frame', factory.ctrlFrameHandler); 4 //this.leapController.removeListener('frame', this.ctrlFrameHandler); 5 this.leapController.removeListener('frame', this.leapController.listeners('frame')[0]); นี่คือวิธีที่คุณทำมันในกลุ่ม ฉันใช้ความชั่วร้ายและเปิดใช้งานโหมดหมายเลขบรรทัดสัมพันธ์ใน. emacs ของฉันดังนี้: (linum-mode) …
11 evil 

1
โหมด Evil และการแสดงออกปกติ
ในกลุ่มถ้าฉันต้องการค้นหาชื่อตัวแปร LX ที่ X คือตัวเลขทั้งหมดฉันก็สามารถพิมพ์/L\dได้ อย่างไรก็ตามนี่ดูเหมือนจะใช้งานevilไม่ได้ มีอีกซินแทกซ์สำหรับนิพจน์ปกติในโหมดความชั่วร้ายหรือฉันจะต้องถอยกลับไปใช้ฟังก์ชันการทำงานของ Emacs เพื่อค้นหาและแทนที่โดยใช้นิพจน์ทั่วไปหรือไม่ ฉันกำลังใช้spacemacsและฉันค่อนข้างไร้เดียงสาเกี่ยวกับสิ่งต่าง ๆ ส่วนใหญ่ใน Emacs อยู่ในโหมด Evil อย่างมีความสุขตลอดทั้งวัน :)

2
วิธียังคงมีตัวบ่งชี้ความชั่วร้าย
ฉันต้องการที่จะสามารถบันทึกบัฟเฟอร์เครื่องหมายความชั่วร้ายในพื้นที่ของฉัน (m เพื่อทำเครื่องหมายตำแหน่งแล้ว 'หรือ `เพื่อข้ามไปยังตำแหน่งนั้น) ข้ามเซสชัน / อินสแตนซ์ของ emacs ฉันไม่แน่ใจจริงๆว่าจะทำอย่างไร ฉันพยายามติดตั้ง / ใช้งานเซสชันและเพิ่มเข้าไปเช่น: (add-to-list 'session-locals-include 'evil-markers-alist) สิ่งนี้ไม่ได้ผลและฉันไม่แน่ใจว่าจะลองอะไรอีก ขอบคุณ

2
ผิดนัด Magit ยอมรับสถานะในความชั่วร้าย
evilฉันใช้ โดยปกติเมื่อฉันกระทำฉันต้องการที่จะเริ่มพิมพ์ทันที แต่เริ่มบัฟเฟอร์ในevil evil-normal-stateฉันเคยตั้ง (evil-set-initial-state #'git-commit-mode 'insert) แต่นั่นไม่ได้ผลอีกต่อไปตามที่ Magit ใช้text-modeสำหรับบัฟเฟอร์การส่งข้อมูล ฉันจะให้ Magit ยอมรับการผิดสัญญาได้evil-insert-stateอย่างไร
9 magit  evil 

1
ฉันจะตั้งค่าการเชื่อมโยงที่สำคัญสำหรับโหมดในสถานะความชั่วร้ายที่เฉพาะเจาะจงได้อย่างไร
ฉันมีชุดของการเชื่อมโยงคีย์ที่ฉันใช้สำหรับทั้งสองweb-modeและphp-modeในโหมดแทรก (ของความชั่วร้าย) ดังนั้นฉันไม่สามารถใช้set-local-mapหรืออะไรบางอย่าง เพราะในโหมดปกติปุ่มเดียวกันจะเรียกคำสั่งอื่น ๆ ดังนั้นการผูกจะต้องใช้งานในevil-insert-state-mapเท่านั้น ฉันมีดังต่อไปนี้: (eval-after-load 'php-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") (lambda () (interactive) (insert " = "))) (define-key evil-insert-state-map (kbd "C-<prior>") (lambda () (interactive) (insert "->"))))) (eval-after-load 'web-mode '(progn (define-key evil-insert-state-map (kbd "C-<next>") 'zencoding-expand-yas) (define-key evil-insert-state-map (kbd "C-<prior>") 'zencoding-expand-line))) ดังนั้นทุกครั้งweb-modeหรือphp-modeกำลังถูกโหลดการเชื่อมโยงคีย์เหล่านี้จะถูกเปิดใช้งาน ปัญหาคือ:สมมติว่าฉันมีบัฟเฟอร์เปิดสองอันหนึ่งอันphp-modeและอีกweb-modeอัน เมื่อweb-modeบัฟเฟอร์เป็นบัฟเฟอร์ปัจจุบันและฉันสลับไปยังบัฟเฟอร์อื่นที่อยู่ในphp-modeการweb-modeผูกยังคงใช้งานอยู่ภายในphp-modeบัฟเฟอร์ ผมพยายามที่จะแก้ปัญหานี้โดยใช้(add-hook 'web-mode-hook [...])และแทนการตั้งค่าในการผูก(add-hook 'php-mode-hook …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.