ฉันมักจะพบว่าการเลื่อนหน้าเต็มทำให้สับสนเกินไปครึ่งหน้ามากเกินไป แต่หน้าไตรมาสเหมาะ ขณะนี้ฉันทำได้เพียงกดปุ่มลูกศรค้างไว้
ฉันจะเลื่อน 25% ของหน้าขึ้นและลงได้อย่างง่ายดายได้อย่างไร
ฉันมักจะพบว่าการเลื่อนหน้าเต็มทำให้สับสนเกินไปครึ่งหน้ามากเกินไป แต่หน้าไตรมาสเหมาะ ขณะนี้ฉันทำได้เพียงกดปุ่มลูกศรค้างไว้
ฉันจะเลื่อน 25% ของหน้าขึ้นและลงได้อย่างง่ายดายได้อย่างไร
คำตอบ:
อาจctrldและctrluอาจเป็นสิ่งที่คุณกำลังมองหา โดยค่าเริ่มต้นพวกเขาย้ายครึ่งหนึ่งของหน้าจอ
จาก:h CTRL-D
:
เลื่อนหน้าต่างลงด้านล่างในบัฟเฟอร์ จำนวนบรรทัดมาจากตัวเลือก 'เลื่อน' (ค่าเริ่มต้น: ครึ่งหน้าจอ)
หากกำหนด [นับ] ให้ตั้งค่าตัวเลือก 'เลื่อน' เป็น [นับ]
ซึ่งหมายความว่าในครั้งแรกที่คุณต้องการเลื่อนในหน้าต่างคุณสามารถทำได้XXctrldโดยที่ XX คือ 25% ของจำนวนบรรทัดในหน้าต่างของคุณ เมื่อตั้งค่าscroll
เป็น XX คุณสามารถใช้ctrldและctrluย้าย 25% ของหน้าจอ
นอกจากนี้ฉันคิดว่ามัน:h scrolling
อาจจะน่าสนใจสำหรับคุณ
แก้ไข
และนี่เป็นอีกวิธีการแก้ปัญหาที่มีฟังก์ชั่นและการแมปบางอย่างเพื่อเพิ่มใน.vimrc
:
function! ScrollQuarter(move)
let height=winheight(0)
if a:move == 'up'
let key="\<C-Y>"
else
let key="\<C-E>"
endif
execute 'normal! ' . height/4 . key
endfunction
nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>
ฟังก์ชั่นจะได้รับความสูงของหน้าต่างปัจจุบันและตามพารามิเตอร์ของมันจะเลื่อนหน้าจอขึ้นหรือลงหนึ่งในสี่ของความสูง
การแมปจะเรียกใช้ฟังก์ชั่นอันแรกที่ขึ้นไปและอันที่สองลงไป
แน่นอนคุณสามารถเปลี่ยน<up>
และ<down>
ใช้ปุ่มอื่นบางปุ่มได้หากคุณต้องการรักษาการทำงานเริ่มต้นของปุ่มลูกศร
ctrl-E
และctrl-Y
ในการจับคู่เนื่องจากก) จากนั้นคุณจะมีทางลัดแยกต่างหากสำหรับการเลื่อนทั้ง 1/2 หน้าและ 1/4 หน้า ข) พฤติกรรมของctrl-U
/ ctrl-D
สอดคล้องกันและไม่ขึ้นอยู่กับว่าคุณเคยใช้การจับคู่หรือไม่
let key="^U"
ctrl+u
ดังนั้นถ้าคุณคัดลอกฟังก์ชั่นในกลุ่มวางเคอร์เซอร์ของคุณในราคาคู่ตีครั้งแรกci"
ในการปรับเปลี่ยนเนื้อหาของคำพูดและจากนั้นกดctrl+v
ตามเดียวกันในบรรทัดctrl+u
let key="^D"
let key="^Y"
let key="^U"
มันจะสร้างพฤติกรรมเดียวกัน แต่ไม่มีผลต่อการ'scroll'
ตั้งค่า
คุณสามารถใช้ctrleและctrlyเพื่อย้ายหน้าโดยหนึ่งบรรทัดขึ้นและลง
จากนั้นถ้าคุณต้องการให้ +/- 25% ที่จะถูกย้ายคุณสามารถใช้20ctrleและที่จะย้ายคุณลง 20 บรรทัด
นี่เป็นคำถามที่อธิบายได้ดีที่คุณคุ้นเคย: /programming/3458689/how-to-move-screen-without-moving-cursor-in-vim
ฉันเปลี่ยนวิธีการของสแต๊กซ์เพื่อให้เลื่อนได้สอดคล้องกันมากกว่า linewraps หากคุณต้องการหนึ่งในสี่ขั้นตอนเปลี่ยน 0.618 กลับเป็น 0.25 หรืออะไรก็ตาม
function! ScrollGolden(move)
let height=winheight(0)
if a:move == 'up'
let prep='L'
" let key="^Y"
let key='gk'
let post='zb'
elseif a:move == 'down'
let prep='H'
" let key="^E"
let key='gj'
let post='zt'
endif
execute 'normal! ' . prep . float2nr(round(height*0.618)) . key . post
endfunction
nnoremap <silent> <BS> :call ScrollGolden('up')<CR>
nnoremap <silent> <Space> :call ScrollGolden('down')<CR>
หากคุณต้องการคำตอบทั่วไปที่ดีและไม่ใช่ 25% ที่แน่นอนคุณสามารถคำนึงถึงจำนวนบรรทัดปกติบนหน้าเว็บโดยหารด้วย 25 และตั้งค่าการแมประบบ ตัวอย่างเช่นหากคุณปกติมีประมาณ 100 บรรทัดบนหน้าจอในแต่ละครั้งดังนั้น 25% ของที่เป็น 25 บรรทัดดังนั้นคุณสามารถตั้งค่าการทำแผนที่ที่สำคัญในสิ่งที่ต้องการทุน J และ K ของคุณสำหรับการเลื่อนขึ้นและลง 25 บรรทัดอย่างรวดเร็ว
noremap J 25j
noremap K 25k
หากคุณต้องการที่จะข้ามไปยังเครื่องหมายไตรมาสของไฟล์ทั้งหมดจากนั้นในโหมดปกติเพียงแค่พิมพ์:
25%
noremap J 25j
hardcodes ค่า25
ดังนั้นเมื่อคุณแยกหน้าต่าง 100 บรรทัดในแนวนอนการแมปของคุณจะนำทาง 50% ของหน้าต่างใหม่ เกี่ยวกับตัวเลือกที่สองของคุณ:25%
ฉันไม่รู้ว่ามันมีอยู่จริง แต่จากการทดสอบของฉันดูเหมือนว่ามันจะวางเคอร์เซอร์บนตำแหน่งตามบรรทัดแรก: ถ้าฉันมีบัฟเฟอร์ 100 บรรทัดและฉันต้องการย้าย 25% การพิมพ์ล่วงหน้า:25%
จะทำให้ฉัน ที่บรรทัด 25 ไม่ว่าเคอร์เซอร์ของฉันจะอยู่ที่ใด คุณช่วยกรุณาใส่หัวข้อความช่วยเหลือที่อธิบายคุณสมบัตินี้ฉันไม่พบมันในเอกสารหรือไม่?