열려있는 모든 탭과 창에 설정을 적용하는 방법은 무엇입니까?


17

모든 탭과 창에 설정을 적용하는 옵션이 있습니까 (예 : :set number열려 있는 모든 탭에 적용) ?

답변:


17

예, 있습니다! :tabdo및 로이 작업을 수행 할 수 있습니다 :windo. 귀하의 경우 구체적으로 :

:tabdo windo set number

참조 :help :tabdo:help :windo더 많은 정보를 얻을 수 있습니다.


4
:tabdo충분하지 않습니다. :help :tabdo각 탭 페이지의 현재 창에서 작동한다고 말합니다. 모든 탭의 모든 창에서 명령을 실행하려면 필요합니다 :tabdo windo set number.
garyjohn

페어 포인트! 업데이트하겠습니다.
텀블러 41

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.