เป็นไปได้หรือไม่ที่จะวางในโหมดแทรกใน Vim?
เป็นไปได้หรือไม่ที่จะวางในโหมดแทรกใน Vim?
คำตอบ:
ในขณะที่อยู่ในโหมดแทรกโดน CTRL-R {register}
ตัวอย่าง:
CTRL-R *
จะแทรกเนื้อหาของคลิปบอร์ด CTRL-R "
(การลงทะเบียนที่ไม่ระบุชื่อ) แทรกการลบหรืองัดล่าสุด เพื่อหาสิ่งนี้ในประเภทช่วยเหลือของกลุ่ม :h i_ctrl-r
CTRL-R *
ใช้งานได้เฉพาะใน GVIM หรือรุ่นที่รวบรวมเพื่อโต้ตอบกับ x พิมพ์และมองหาvim --version
+xterm_clipboard
หากคุณไม่มีสิ่งนั้นคุณต้องมี vim เวอร์ชั่นอื่น ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
+clipboard
แต่ถ้าคุณมี+xterm_clipboard
คุณควรมีสิ่งนั้นต่อไป ในบางระบบปฏิบัติการxterm_clipboard
ไม่สามารถใช้ได้
*
register สามารถวางได้ด้วยการคลิกเมาส์กลางขณะ+
ที่คัดลอก / วางแบบดั้งเดิม standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
:set paste
หากคุณไม่ต้องการเป็นกลุ่มที่จะฉีกรูปแบบในการเข้ามาข้อความที่วางคุณอาจต้องการพิจารณาใช้: วิธีนี้จะป้องกันไม่ให้ Vim ทำการแท็บรหัสของคุณอีกครั้ง เมื่อวางเสร็จแล้ว:set nopaste
จะกลับสู่พฤติกรรมปกติ
นอกจากนี้ยังเป็นไปได้ที่จะสลับโหมดด้วยปุ่มเดียวโดยเพิ่มบางสิ่งบางอย่างเช่นset pastetoggle=<F2>
. vimrc ของคุณ รายละเอียดเพิ่มเติมเกี่ยวกับการสลับอัตโนมัติเยื้องอยู่ที่นี่
:set nopaste
จะปิดใช้งานโหมดวาง
:set paste!
วางแปะอยู่ใกล้กับประวัติคำสั่งของคุณมากดังนั้นคุณสามารถกด ':' จากนั้นลูกศรขึ้นและเพิ่ม '!'
:set paste!
Thanks :)
!
ในตอนท้ายของคำสั่งในvim
สลับคำสั่งเปิดและปิด วิธีนี้คุณไม่จำเป็นต้องพิมพ์:set nopaste
แทนคุณสามารถเลื่อนดูประวัติและเรียกใช้คำสั่งเดียวกัน ( :set paste!
) อีกครั้ง
ไม่ไม่ตรง สิ่งที่คุณสามารถทำได้คือออกจากโหมดแทรกอย่างรวดเร็วสำหรับการทำงานในโหมดปกติเพียงครั้งเดียวด้วยCtrl-Oแล้ววางจากที่นั่นซึ่งจะจบลงด้วยการทำให้คุณกลับมาอยู่ในโหมดแทรก
คีย์ผสม: Ctrl-O p
แก้ไข:น่าสนใจ ดูเหมือนว่ามีหลายวิธีที่คนอื่นหลายคนระบุไว้
esc + p
อะไร
esc + p + i
และแน่นอนง่ายกว่าCTRL-R + "
CTRL-R "
จริงนี้บางครั้งมีลักษณะการทำงานที่แตกต่างจาก ตัวอย่างเช่นแม้ว่าการตั้งค่า vimrc สามารถเปลี่ยนแปลงสิ่งนี้ได้ แต่การวางบางสิ่งในบรรทัดใหม่โดยใช้CTRL-O p
ทำให้การเยื้องของมันหายไป
ในขณะที่อยู่ในโหมดแทรกคุณสามารถใช้Ctrl-R {register}
โดยที่registerสามารถ:
+
สำหรับคลิปบอร์ด*
สำหรับคลิปบอร์ด X (ข้อความที่เลือกล่าสุดใน X) "
สำหรับการลงทะเบียนที่ไม่มีชื่อ (ลบล่าสุดหรือดึงเป็นกลุ่ม),:h registers
)Ctrl-R {register}
แทรกข้อความราวกับว่ามันถูกพิมพ์
Ctrl-R Ctrl-O {register}
แทรกข้อความที่มีการเยื้องเดิม
Ctrl-R Ctrl-P {register}
แทรกข้อความและเยื้องอัตโนมัติ
Ctrl-O
สามารถใช้เพื่อเรียกใช้คำสั่งโหมดปกติใด ๆ ก่อนที่จะกลับไปที่โหมดแทรกดังนั้น
Ctrl-O "+p
สามารถใช้งานได้เช่นกัน
สำหรับข้อมูลเพิ่มเติมดูเอกสารประกอบด้วย :h i_ctrl-r
คุณสามารถใช้สิ่งนี้เพื่อวางจากคลิปบอร์ดด้วยCtrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
และนี่สำหรับการเลือกภาพของ yanking ในคลิปบอร์ดด้วยCtrlc:
vnoremap <C-c> "+y
หากคุณต้องการที่จะใช้คลิปบอร์ดโดยค่าเริ่มต้นสำหรับการสูบบุหรี่แบบคลาสสิก / การวาง ( y/ p) ในโหมดปกตินี่คือตัวเลือกการกำหนดค่าที่ทำ:
set clipboard=unnamedplus
ด้วยการกำหนดค่านี้คุณสามารถดึงมันออกมาก่อนในโหมดปกติแล้ววางด้วย Ctrlvในโหมดแทรก นอกจากนี้คุณยังสามารถวางข้อความจากอินสแตนซ์กลุ่มและแอพพลิเคชั่นต่าง ๆ
ตัวเลือกอื่นคือ:
set clipboard=unnamed
จากนั้นคุณจะสามารถเลือกบางสิ่งได้โดยการลากเมาส์ในสภาพแวดล้อม X และวางลงในกลุ่มหลังจากนั้น แต่ (ด้วยเหตุผลบางอย่าง) คุณจะไม่สามารถดึงบางสิ่งบางอย่าง ( y) เป็นกลุ่มและshiftinsertอื่นหลังจากนั้นซึ่งอาจจะค่อนข้าง จำกัด
เป็นกลุ่มเอกสารเกี่ยวกับเรื่องนี้: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
สำหรับการวางจากการลงทะเบียนที่กำหนดเองคุณสามารถทำตามคำตอบอื่น ๆ :) คำตอบนี้ส่วนใหญ่เกี่ยวกับการรวม Vim เข้ากับคลิปบอร์ดระบบของคุณ
หมายเหตุว่าset clipboard=unnamedplus
และset clipboard=unnamed
ในการทำงานของคุณจะต้องใช้ gvim หรือ vimx ( vim-X11
): +xterm_clipboard
เหล่านี้จะรวบรวมกับ คุณสามารถเลือกที่จะนำสิ่งนี้เข้าสู่.bashrc
นามแฝงvim
ด้วยvimx
:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
คุณสามารถตรวจสอบว่าเสียงเรียกเข้าของคุณมี+xterm_clipboard
ข้อมูลที่ให้ไว้โดยvim --version
หรือไม่
:set paste
และไบเซนไทน์<leader><leader> * y
ถึงเป็นที่ต้องการจากระยะไกล? เพื่อไม่ให้เกิดความมุ่งมั่นเกินไปฉันก็อยากรู้อยากเห็นสิ่งที่ปรัชญานี้สะท้อนให้เห็นถึงความจริงหรือถ้ามันเป็นเพียงความโชคร้ายทางประวัติศาสตร์
inoremap <S-Insert> <F12><C-r>+<F12>
(ฉันใช้ F12 เป็นสีพาสเทล) ขอบคุณ
หากคุณตั้งเป็นกลุ่มที่จะใช้คลิปบอร์ดระบบ ( :set clipboard=unnamed
) จากนั้นข้อความใด ๆ ที่คุณคัดลอกในกลุ่มสามารถวางใช้+Shift + เป็นเพียงการผสมคีย์วางทั้งระบบปฏิบัติการ ( + คือ 'คัดลอก' ที่สอดคล้องกัน)InsertShiftInsertCtrlInsert
p
วางข้อความในคลิปบอร์ดหรือไม่
Shift + Insert
เพื่อวางข้อความเราต้องอยู่ในโหมดแทรก
คุณสามารถใช้ปุ่มกลางของเมาส์เพื่อวางในโหมดแทรก (Linux เท่านั้น)
คุณสามารถเข้าสู่-- INSERT (past) --
โหมดผ่าน:
หรือ
:set paste
และเข้าสู่โหมดแทรก ( :set nopaste
เพื่อปิดการใช้งาน)เมื่ออยู่ใน-- INSERT (past) --
โหมดเพียงใช้ฟังก์ชันวางระบบของคุณ (เช่นCtrlShiftvบน Linux,Cmdvบน Mac OS)
กลยุทธ์นี้มีประโยชน์มากเมื่อใช้เป็นกลุ่มมากกว่า ssh
ใช่. ใน Windows Ctrl+Vและ Linux กดปุ่มทั้งสองปุ่มเกือบพร้อมกัน
ใน Windows ฉันคิดว่าบรรทัดนี้ใน _vimrc ของฉันน่าจะเป็น:
source $VIMRUNTIME/mswin.vim
ใน Linux ฉันจำไม่ได้ว่าทำไปแล้ว ดูเหมือนว่าฉันอาจลบบางบรรทัดจากไฟล์. vimrc เริ่มต้น
ดูเหมือนว่าแผนที่ที่กำหนดเองจะเหมาะสมในกรณีนี้ นี่คือสิ่งที่ฉันใช้เพื่อวางรายการ yanked ในโหมดแทรก:
inoremap <Leader>p <ESC>pa
Leader
กุญแจของฉันที่นี่คือ\
; ซึ่งหมายความว่าการกดปุ่ม\p
ในโหมดแทรกจะเป็นการวางรายการ / บรรทัดที่ถูกดึงไว้ก่อนหน้านี้
เพียงเพิ่มแผนที่:
" ~/.vimrc
inoremap <c-p> <c-r>*
รีสตาร์ทเสียงเรียกเข้าและเมื่อกดCrtl+p
ในโหมดแทรกข้อความที่คัดลอกจะถูกวาง