จะใช้การตั้งค่าในแท็บและหน้าต่างที่เปิดอยู่ทั้งหมดได้อย่างไร


17

มีตัวเลือกในการใช้การตั้งค่าในแท็บและหน้าต่างทั้งหมดเช่นนำ:set numberไปใช้กับแท็บที่เปิดอยู่ทั้งหมดหรือไม่

คำตอบ:


17

ใช่แล้ว! คุณสามารถทำได้ด้วยและ:tabdo :windoสำหรับกรณีของคุณโดยเฉพาะ:

:tabdo windo set number

ดู:help :tabdoและ:help :windoสำหรับข้อมูลเพิ่มเติม


4
:tabdoไม่เพียงพอ :help :tabdoบอกว่ามันทำงานในหน้าต่างปัจจุบันของแต่ละหน้าแท็บ :tabdo windo set numberในการดำเนินการคำสั่งในหน้าต่างทั้งหมดในแท็บทั้งหมดที่คุณจะต้อง
garyjohn

จุดประสงค์! ฉันจะอัปเดต
Tumbler41

7

:tabdo windo set numberทำให้งานเสร็จ แต่ฉันไม่ชอบจริง ๆ เพราะมันสลับไปยังแต่ละแท็บและหน้าต่างก่อนเรียกใช้คำสั่ง หลังจากเสร็จสิ้นการทำงานคุณจะสิ้นสุดในหน้าต่างสุดท้ายของแท็บสุดท้าย

ฉันคิดว่านี่เป็นวิธีที่สะอาดกว่าในการตั้งค่าตัวเลือกในหน้าต่างทั้งหมดโดยไม่ต้องเปลี่ยนแท็บและหน้าต่างปัจจุบัน:

function! s:set_all(option, val, ...) abort
  let val = eval(a:val)

  for t in range(1, tabpagenr('$'))
    for w in range(1, tabpagewinnr(t, '$'))
      if gettabwinvar(t, w, '&buftype') !=# ''
        continue
      endif
      call settabwinvar(t, w, '&'.a:option, val)
    endfor
  endfor
endfunction

command! -complete=option -nargs=+ SetAll call s:set_all(<f-args>)

การรัน:SetAll number 1จะเปิดใช้งานคอลัมน์ตัวเลขในทุกหน้าต่างยกเว้นคอลัมน์ที่buftypeตั้งไว้เช่นหน้าต่างวิธีใช้

:tabdo windo let &number = 1แห่งนี้เป็นเช่นเดียวกับการทำงาน: ดังนั้นอาร์กิวเมนต์ที่สองจะต้องเป็นนิพจน์ที่กำหนดได้ แทนที่จะ:set filetype=iniเป็น:SetAll filetype "ini"เช่นนั้น


1
ฉันจะเพิ่ม (ข้างเปลี่ยนแท็บ / หน้าต่างปัจจุบัน) ที่:tabdo windoอาจเรียกใช้คำสั่งอัตโนมัติและชะลอการตั้งค่าตัวเลือก ในขณะที่วิธีการแก้ปัญหาของ Tommy A ไม่สามารถใช้งานได้ทันที แต่เป็นสิ่งที่ต้องการในปลั๊กอิน
Luc Hermitte
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.