ฉันจะทำซ้ำทั้งบรรทัดเป็นกลุ่มในวิธีที่คล้ายกับCtrl+ Dใน IntelliJ IDEA / Resharper หรือCtrl+ Alt+ ↑/ ↓ในEclipse ได้อย่างไร
Yes Pเช่า :)
ฉันจะทำซ้ำทั้งบรรทัดเป็นกลุ่มในวิธีที่คล้ายกับCtrl+ Dใน IntelliJ IDEA / Resharper หรือCtrl+ Alt+ ↑/ ↓ในEclipse ได้อย่างไร
Yes Pเช่า :)
คำตอบ:
yyหรือYคัดลอกบรรทัด (จำ: Y ank )
หรือ
ddจะdหนึ่งคำสาย (สำเนาเป็นกลุ่มสิ่งที่คุณลบเป็นคลิปบอร์ดเหมือน "สมัคร" เช่นการตัดการทำงาน)
แล้วก็
pเพื่อp asteข้อความที่คัดลอกหรือลบหลังจากบรรทัดปัจจุบัน
หรือ
Pเพื่อp asteข้อความที่คัดลอกหรือลบก่อนบรรทัดปัจจุบัน
Y y$(สอดคล้องกับDและC. ( แต่ไม่ Vi เข้ากันได้ (ไม่มีใครใส่ใจ))) :help Yที่มีการเสนอที่แม้จะอยู่ใน
yjหรือykโดยเฉพาะอย่างยิ่งเมื่อคุณไม่ได้เพิ่มจำนวนอักขระหนึ่งตัว นอกจากykนี้เป็นเวอร์ชันย้อนหลังที่2yyไม่สามารถทำได้และคุณสามารถใส่จำนวนบรรทัดที่จะไปข้างหลังในy9jหรือy2kอื่น ๆ ความแตกต่างเพียงอย่างเดียวคือการนับของคุณจะต้องn-1เป็นจำนวนnบรรทัดทั้งหมด แต่หัวของคุณสามารถเรียนรู้ได้ว่า อย่างไรก็ตาม.
โหมดปกติ: ดูคำตอบอื่น ๆ
Exวิธี:
:t. จะซ้ำบรรทัด:t 7 จะคัดลอกหลังจากบรรทัด 7:,+t0จะคัดลอกบรรทัดปัจจุบันและบรรทัดถัดไปที่จุดเริ่มต้นของไฟล์ ( ,+เป็นคำพ้องสำหรับช่วง.,.+1):1,t$จะคัดลอกบรรทัดจากจุดเริ่มต้นจนถึงตำแหน่งเคอร์เซอร์ไปยังจุดสิ้นสุด ( 1,เป็นคำพ้องความหมายสำหรับช่วง1,.)หากคุณต้องการที่จะย้ายแทนการคัดลอกใช้แทน:m:t
สิ่งนี้มีประสิทธิภาพมากหากคุณรวมเข้ากับ:gหรือ:v:
:v/foo/m$ จะย้ายทุกบรรทัดที่ไม่ตรงกับรูปแบบ“ foo” ไปที่ท้ายไฟล์:+,$g/^\s*class\s\+\i\+/t.จะคัดลอกบรรทัดต่อมาทั้งหมดของแบบฟอร์มclass xxxทันทีหลังจากเคอร์เซอร์อ้างอิง: :help range, :help :t, :help :g, :help :mและ:help :v
:ในโหมดภาพมันจะถูกแปลงเป็น'<,'>ดังนั้นมันจะเลือกช่วงของเส้นที่การเลือกภาพที่ครอบคลุมไว้ล่วงหน้า ดังนั้นในโหมดภาพ:t0จะคัดลอกบรรทัดที่จุดเริ่มต้น
:t.เป็นคำตอบที่แน่นอนสำหรับคำถาม
YPหรือหรือYpyyp
Yมักจะถูกแมปใหม่ให้กับy$(งัด (คัดลอก)) จนถึงจุดสิ้นสุดของบรรทัด (จากตำแหน่งเคอร์เซอร์ปัจจุบันไม่ใช่จุดเริ่มต้นของบรรทัด)) ด้วยสายนี้ใน.vimrc::nnoremap Y y$
yyP

ไม่ได้ง่ายกว่านี้อีกแล้ว! จากโหมดปกติ:
yy
จากนั้นเลื่อนไปที่บรรทัดที่คุณต้องการวางที่และ
p
yy
จะดึงสายปัจจุบันโดยไม่ลบ
dd
จะลบบรรทัดปัจจุบัน
p
putเส้นจะถูกจับโดยวิธีใดวิธีหนึ่งก่อนหน้านี้
หากคุณต้องการวิธีอื่น:
"ayy: aนี้จะเก็บสายในบัฟเฟอร์
"ap: นี่จะใส่เนื้อหาของบัฟเฟอร์aที่เคอร์เซอร์
มีหลายรูปแบบในเรื่องนี้
"a5yy: นี้จะเก็บ 5 aสายในบัฟเฟอร์
ดู " ไฟล์ช่วยเหลือเป็นกลุ่มเพื่อความสนุกสนานมากขึ้น
yyp - จำด้วย "yippee!"
หลายบรรทัดที่มีตัวเลขอยู่ระหว่าง:
y7yp
:.,.+7 copy .+7: P
ฉันชอบ: Shift+ v(เพื่อเลือกทั้งบรรทัดทันทีและให้คุณเลือกบรรทัดอื่นถ้าคุณต้องการ), y, p
นอกจากนี้คุณยังสามารถลอง <Cx> <Cl> ซึ่งจะทำซ้ำบรรทัดสุดท้ายจากโหมดแทรกและนำเสนอหน้าต่างที่มีบรรทัดทั้งหมดให้คุณ มันใช้งานได้เกือบเหมือน <Cp>
ตัวเลือกอื่นจะไปกับ:
nmap <C-d> mzyyp`z
ช่วยให้คุณได้เปรียบในการรักษาตำแหน่งเคอร์เซอร์
สำหรับคนที่ไม่รู้จัก vi คำตอบบางอย่างจากด้านบนอาจทำให้เขาเข้าใจผิดด้วยวลีเช่น "วาง ... หลัง / ก่อนบรรทัดปัจจุบัน "
มันคือ "วาง ... หลัง / ก่อนเคอร์เซอร์ "
yyหรือYเพื่อคัดลอกบรรทัด
หรือ
ddเพื่อลบบรรทัด
แล้วก็
pเพื่อวางข้อความที่คัดลอกหรือลบหลังจากเคอร์เซอร์
หรือ
Pการวางข้อความที่คัดลอกหรือลบก่อนเคอร์เซอร์
สำหรับการเชื่อมโยงคีย์เพิ่มเติมคุณสามารถเยี่ยมชมไซต์นี้: vi รายการการผูกคีย์ที่สมบูรณ์
1 gotcha: เมื่อคุณใช้ "p" เพื่อวางบรรทัดมันจะวางไว้หลังบรรทัดที่เคอร์เซอร์ของคุณเปิดดังนั้นหากคุณต้องการเพิ่มบรรทัดหลังบรรทัดที่คุณกำลังลากอย่าขยับเคอร์เซอร์ลงบรรทัด ก่อนที่จะวางสายใหม่
ค่าเริ่มต้นคือyypแต่ฉันใช้การปฏิเสธนี้เป็นเวลาหนึ่งปีและรักมัน:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
ฉันรู้ว่าฉันไปงานปาร์ตี้สาย แต่อะไรก็ตาม; ฉันมีสิ่งนี้ใน. vimrc ของฉัน:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
:copyคำสั่งสำเนาเพียงบรรทัดที่เลือกหรือช่วง (เสมอสายทั้งหมด) ให้ต่ำกว่าจำนวนบรรทัดให้เป็นอาร์กิวเมนต์
ในโหมดปกติสิ่งนี้จะcopy . คัดลอกบรรทัดนี้ไปด้านล่างบรรทัดนี้
และในโหมดภาพมันจะกลายเป็นสำเนาจากจุดเริ่มต้นของการเลือกไปยังจุดสิ้นสุดของการเลือกไปที่บรรทัดด้านล่างท้ายของการเลือก'<,'> copy '>
สำหรับผู้ที่เริ่มต้นเรียนรู้ vi ต่อไปนี้เป็นคำแนะนำที่ดีสำหรับ vi โดยการแสดงรายการคำสั่งเคียงข้างกับการเคลื่อนย้ายเคอร์เซอร์และปุ่มลัดของ Windows GUI Editor โดยทั่วไป มันแสดงรายการคำสั่งพื้นฐานทั้งหมดรวมถึงyy(คัดลอกบรรทัด) และp(วางหลัง) หรือP(วางก่อน)
หากคุณต้องการทำซ้ำบรรทัดและวางลงใต้ตำแหน่งปัจจุบันเช่นเดียวกับใน Sublime Ctrl+ Shift+ Dคุณสามารถเพิ่ม.vimrcไฟล์นี้ในไฟล์ของคุณได้
nmap <S-C-d> <Esc>Yp
หรือสำหรับโหมดแทรก:
imap <S-C-d> <Esc>Ypa
iไปยังจุดสิ้นสุดเพื่อกลับเข้ามาอีกครั้งundoดังนั้นการแก้ปัญหาการคัดลอกบรรทัดในโหมดแทรกจึงไม่สำคัญอย่างที่คิด
imap <S-C-d> <Esc>Ypi โหมดแทรกและ nmap <S-C-d> <Esc>Ypในโหมดปกติ
ฉันชอบที่จะใช้การทำแผนที่นี้:
:nnoremap yp Yp
เพราะมันทำให้มันสอดคล้องกับการใช้งานพร้อมกับYPคำสั่งพื้นเมือง