ฉันจะแสดงหมายเลขบรรทัดสัมพัทธ์ได้อย่างไร


52

คำสั่ง vim จำนวนมากสามารถใช้หมายเลขที่อ้างถึงจำนวนบรรทัดที่คำสั่งจะดำเนินการ

เป็นไปได้หรือไม่ที่จะแสดงหมายเลขบรรทัดที่สัมพันธ์กับบรรทัดปัจจุบัน สิ่งต่อไปนี้:

3: some text here
2: more text
1: This is the line above where the cursor is
0: The cursor is on this line
1: This is the line after the cursor
2: More text here

คำตอบ:


64

ฉันเพิ่งตอบคำถามคล้ายกันที่นี่: ฉันจะเพิ่มหมายเลขบรรทัดใน Vim ได้อย่างไร

เริ่มต้นด้วยเวอร์ชั่น 7.3 คุณสามารถใช้สิ่งต่อไปนี้:

set relativenumber

ฉันใช้ทั้งจริงrelativenumberและnumberใน vimrc ซึ่งจะใช้หมายเลขสัมพัทธ์สำหรับทุกบรรทัดยกเว้นบรรทัดปัจจุบัน

set number                     " Show current line number
set relativenumber             " Show relative line numbers

ไม่แน่ใจอย่างแน่นอน แต่การเปลี่ยนแปลงครั้งแรกที่กล่าวถึงในนั้นคือ 7.3 ftp.vim.org/pub/vim/patches/7.3/README
Collin Peters

7

คุณสามารถสลับเปิด / ปิดการกำหนดหมายเลขโดยใช้:

:set rnu    " toggle relative numbering on
:set rnu!   " toggle relative numbering off

5
function! NumberToggle()
  if(&relativenumber == 1)
    set norelativenumber
  else
    set relativenumber
  endif
endfunc

nnoremap <leader>nt :call NumberToggle()<cr>

2
norelativenumber เพียงแค่ปิดหมายเลขทั้งหมดหรือสลับเป็นหมายเลขปกติหรือไม่
Nick J Adams

set numberคือการตั้งค่าที่ควบคุมการแสดงตนของตัวเลขดังนั้นมันจะสลับระหว่าง rel และ non-rel เท่านั้น
Shawndumas

2
numbers.vimปลั๊กอินยังเพิ่มบางฟังก์ชันการทำงานที่สูงขึ้นจำนวนญาติเช่นมีสายเคอร์เซอร์ของคุณหมกมุ่นอยู่กับการพิมพ์จำนวนที่ไม่ใช่ญาติและเปลี่ยนไปใช้ที่ไม่ใช่ญาติเลขตลอดไฟล์ทั้งหมดเมื่อหน้าต่างเป็นกลุ่มที่สูญเสียโฟกัส
bronzehedwick

1
@shawndumas มีความสำคัญกว่าตัวเลขใดบ้าง? ถ้าเช่นฉันได้ตั้งค่าหมายเลขใน vimrc ของฉันและตั้งค่า relativenumber / norelativenumber ถูกเรียกมันสามารถสลับระหว่างญาติและหมายเลขมาตรฐานได้หรือไม่
Nick J Adams

1
ถูกต้องที่สุด
Shawndumas

4

หากคุณต้องการใช้ฮอตคีย์สำหรับสลับหมายเลขบรรทัดสัมพัทธ์ต่อไปนี้เป็นตัวอย่างข้อมูลใน vimrc ของฉัน:

" Toggle relative line number
nmap <C-L><C-L> :set invrelativenumber<CR>

ในกรณีนี้ฉันใช้ ctrl-L สองครั้งเพื่อสลับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.