การเรียงลำดับรายการบัฟเฟอร์ใหม่


29

หลังจากทำงานโครงการมาระยะหนึ่งแล้วฉันก็เริ่มเห็นช่องว่างขนาดใหญ่ระหว่างหมายเลขบัฟเฟอร์ติดต่อกัน นี่เป็นเพราะบัฟเฟอร์ระหว่างนั้นถูกลบออกด้วยเหตุผลต่างๆ :lsแต่น่าเสียดายที่นี้สามารถทำให้มันอึดอัดใจที่จะข้ามไปยังบัฟเฟอร์โดยเฉพาะอย่างยิ่งหรือเลือกช่วงของบัฟเฟอร์หลังจากการพิมพ์ มีวิธีการกำหนดหมายเลขบัฟเฟอร์ที่เปิดใหม่ทั้งหมดโดยเริ่มจากที่หนึ่งโดยไม่ต้องเปิดไฟล์ทั้งหมดอีกครั้งหรือไม่

คำตอบ:


21

ไม่ใช่ (ไม่ใช่โดยไม่ลบบัฟเฟอร์)

Vim ไม่สนับสนุนการกำหนดหมายเลขบัฟเฟอร์ด้วยตนเองหรือการสั่งซื้อบัฟเฟอร์อีกครั้งเมื่อคุณเปิด ปรัชญาของมันคือบัฟเฟอร์แต่ละตัวจะได้รับตัวระบุที่คงที่ตลอดอายุการใช้งานของบัฟเฟอร์นั้น (ในความช่วยเหลือสำหรับ:lsมันจะบันทึกว่า "แต่ละบัฟเฟอร์มีจำนวนเฉพาะตัวเลขนั้นจะไม่เปลี่ยนแปลง ... ")

คุณสามารถใช้รายการอาร์กิวเมนต์ได้ ใส่บัฟเฟอร์ที่เปิดอยู่ทั้งหมดลงในรายการอาร์กิวเมนต์ลบบัฟเฟอร์ที่ค้างอยู่ทั้งหมดแล้วเปิดทุกอย่างในรายการอาร์กิวเมนต์ คำสั่งต่อไปนี้จะทำให้สำเร็จ:

  • :argdel * (ลบรายการอาร์กิวเมนต์ที่มีอยู่)
  • :bufdo argadd % (สำหรับแต่ละบัฟเฟอร์ให้เพิ่มเส้นทางของบัฟเฟอร์ไปยังรายการ)
  • :1,1000bd (ลบบัฟเฟอร์ 1 ถึง 1,000 อาจเป็นวิธีที่ดีกว่าในการทำเช่นนี้)
  • :argdo e (สำหรับแต่ละอาร์กิวเมนต์ให้แก้ไขอาร์กิวเมนต์นั้น)

สิ่งนี้จะทำให้คุณมีบัฟเฟอร์ว่างเปล่าพิเศษที่ vim เปิดขึ้นเมื่อคุณลบบัฟเฟอร์ก่อนหน้านี้ทั้งหมด แต่เป็นการประมาณฟังก์ชั่นที่คุณต้องการโดยประมาณ คุณสามารถ:bdบัฟเฟอร์พิเศษนั้น


1
คำตอบของคุณบอกว่าไม่ แต่ดูเหมือนว่าใช้งานได้ดี!
aharris88

(ฉันหมายถึง "ไม่" ในแง่ที่ว่าคุณไม่สามารถทำได้โดยไม่ต้องเปิดไฟล์ใหม่) จริง ๆ แล้วมันเปลี่ยนหมายเลขจาก 1 สำหรับคุณแม้ว่า? ฉันคิดว่ามันทำตอนที่ฉันลองมันครั้งแรก แต่ตอนนี้ฉันเห็นว่ามันไม่ได้จัดเรียงใหม่สำหรับฉัน

ใช่มันเปลี่ยนตัวเลขสำหรับฉัน
aharris88

ใช่ฉันแค่โง่ฉันพบความผิดพลาดของฉัน

"แต่ละบัฟเฟอร์ได้รับตัวระบุที่คงที่ตลอดอายุของบัฟเฟอร์นั้น" จริง ๆ แล้วเซสชัน!

14

"หมายเลขบัฟเฟอร์บ้าไปแล้ว"บอกฉันเกี่ยวกับมัน! ในตอนท้ายของวันฉันง่ายกว่า 100 บัฟเฟอร์ แต่โชคดีอย่างที่คุณเห็นในภาพเคลื่อนไหวนี้คุณมีtabชื่อบัฟเฟอร์เสร็จสมบูรณ์

Hit: b se <Tab>

ดังนั้นแม้ว่าคุณจะไม่สามารถกำหนดหมายเลขบัฟเฟอร์ใหม่ได้คุณยังสามารถกระโดดไปมาได้อย่างง่ายดาย

ฉันไม่รู้ว่ามันชัดเจนจากอนิเมชั่นหรือไม่ แต่ "การเติมให้เต็มแท็บ" นั้นไม่เหมือนกับการเติมเต็มของบรรทัดคำสั่ง มันเป็นเหมือน "ความไม่ชัดเจนในการแก้แท็บตัวคั่น" หมายความว่าที่บรรทัดคำสั่งฉันจะต้องพิมพ์sctabแล้วsetabแต่ที่นี่เป็นกลุ่มจะค้นหา 'se' และแทนที่ด้วยการจับคู่แรก (และเท่านั้น) ถ้าฉันพิมพ์testtabมันจะมีการจับคู่ 'generate_test_data.py' แล้วtabอีกครั้งจะจับคู่ 'สคริปต์ / setup_test_data.sh' จากนั้นtabอีกครั้งจะขี่จักรยานกลับไปรอบ ๆ ฯลฯ

จุดที่คุณจะติดนิสัยในการพิมพ์เพียง:b <minimum amount of unambiguous characters>tabเพื่อข้ามไปยังเอกสารที่คุณต้องการ ฉันคิดว่ามันดีกว่าจำได้ว่า "บัฟเฟอร์ของฉันคือ 1: foo 2: บาร์ 3: ฯลฯ " ซึ่งเป็นวิธีที่ฉันเคยทำเมื่อฉันยังเป็นมือใหม่


7

คุณสามารถใช้กลุ่มสายการบิน ปลั๊กอินนี้มีพฤติกรรมที่อาจแก้ไขปัญหาของคุณ:

ดูบรรทัด470-479 ใน airline.txt

สิ่งนี้จะไม่เปลี่ยนหมายเลขบัฟเฟอร์ แต่คุณสามารถเลือกบัฟเฟอร์จากซ้ายไปขวาด้วยหมายเลขแถวในแท็บไลน์ นี่คือการตั้งค่าของฉันสำหรับสายการบินใน.vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

บรรทัดแท็บของฉัน: แท็บของฉัน


! ที่น่าตื่นตาตื่นใจ ฉันรักมัน :)
Blasco

ไม่ใช่คำตอบของคำถาม แต่แก้ไขปัญหากับหมายเลขบัฟเฟอร์บ้า เพียงข้อเสนอแนะเพื่อแสดง buffer_numbers เท่านั้น: switch_buffers_and_tabs=1และbuffer_idx_mode=0
caligari

6

ตามเอกสารประกอบตัวเลขบัฟเฟอร์ไม่เคยเปลี่ยนแปลง

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

วิธีเดียวที่ฉันสามารถคิดว่าการกำหนดหมายเลขบัฟเฟอร์ใหม่คือการเริ่มต้นเป็นกลุ่ม


0

คำถามเก่า แต่เนื่องจากสิ่งนี้เกิดขึ้นที่จุดสูงสุดในการค้นหาของ Google ฉันจะปล่อยไว้ที่นี่เพื่อการค้นหาในอนาคต ดังที่ Bruno แนะนำเครื่องมือค้นหาฟัซซีที่รองรับรายการบัฟเฟอร์เป็นวิธีที่จะไป ผมเองใช้และแนะนำfzf-เป็นกลุ่ม มันมีคำสั่ง:FZFBuffersที่มีลักษณะเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

หมายเลขบัฟเฟอร์จะแสดงทางด้านซ้ายในกรณีที่คุณต้องการ แต่ด้วยตัวค้นหาฟัซซี่คุณอาจไม่จำเป็นต้องใช้อีกครั้ง เพียงจำชื่อไฟล์บางส่วนและโดยปกติแล้วจะมีการกด 2-5 ครั้ง โดยส่วนตัวแล้วฉันได้แมปคำสั่งนี้ไปยังการกดแป้นและการสลับระหว่างบัฟเฟอร์เกือบจะทันทีสำหรับฉัน!

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