ฉันจะทำซ้ำทั้งบรรทัดเป็นกลุ่มในวิธีที่คล้ายกับCtrl+ Dใน IntelliJ IDEA / Resharper หรือCtrl+ Alt+ ↑/ ↓ในEclipse ได้อย่างไร
Y
es P
เช่า :)
ฉันจะทำซ้ำทั้งบรรทัดเป็นกลุ่มในวิธีที่คล้ายกับCtrl+ Dใน IntelliJ IDEA / Resharper หรือCtrl+ Alt+ ↑/ ↓ในEclipse ได้อย่างไร
Y
es 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
หรือหรือYp
yyp
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
คำสั่งพื้นเมือง