오프 스크린으로 열리는 창을 이동하는 방법?


272

이중 모니터 설정이 있고 최근에 위치 설정을 가지고 놀았으며 일부 단일 창 응용 프로그램은 마지막으로 닫힌 위치를 유지하고 나중에 같은 위치에서 여는 것을 선호합니다. 불행히도, 이제는 내 화면의 볼 수있는 영역에서 벗어날 수 있습니다!

특정 창을 볼 수있는 영역으로 강제 전환 할 수있는 방법이 있습니까?


2
이것은 여전히 ​​Windows 10의 문제입니다! 나는 3 개의 모니터를 가지고 있으며 하나의 'here and there'만 사용합니다 ... 사용 할 때 사용을 중지하면 일부 열린 프로그램이 기본적으로 열립니다. 결국 메인 모니터로 돌아가려면 win + 왼쪽 화살표를 사용해야합니다.

1
7 년 후에도 여전히 문제가 발생합니다.
Jack Wasey

답변:


194

Windows 7 이상의 사용자 : Windows Key+ Shift+ 또는 선택한 창을 해당 방향으로 모니터로 이동합니다.


2
이 덕분에 비표준 창이있는 앱이 있었으므로 Alt-Space 기술이 작동하지 않습니다 (Windows의 Foxit Reader).
Bdoserror

3
또한 승리 + 왼쪽 / 오른쪽 / 위는 활성 모니터의 절반을 덮는 창을 배치하거나 최대화합니다. 이것은 내가 찾은 모든 조건에서 작동해야하며 매우 유용한 키이기도합니다 (fn + 화살표 키 : P를 시도 할 때 키를 계속 누르는 경우 제외).
Kat

11
이것은 내 Windows 10 프로의 x64에 아무것도하지 않는다
마이크 'POMAX'Kamermans

3
@ Mike'Pomax'Kamermans : 웃기다. 이것은 Windows 10 Pro x64 랩톱에서 작동하여 화면 밖에서 열리는 Emacs 창을 이동시키는 유일한 방법입니다.
Mike Sherrill 'Cat

2
와우, 나는 이것에 대해 전혀 몰랐다는 것을 믿을 수 없다. 누군가 8 년 후에도 여전히 유용하다고 생각합니다 :)
veryRandomMe

433

나는이 접근법을 사용한다 :

  • Alt+ Tab를 사용 하여 오프 스크린 응용 프로그램으로 전환합니다.
  • Alt+ SPACE를 눌러 시스템 메뉴를 불러옵니다 (화면이 꺼져있어 보이지 않습니다)
  • 눌러 R(이 극대화되는 경우 당신이 그것을 이동할 수 없습니다) 최대되지 않는 창을 보장하기 위해 "복원"메뉴 항목을 선택합니다
  • 보도 Alt+는 SPACE다시, 다음 M은 "이동"메뉴 선택을 선택합니다.
  • 화살표 키 중 하나를 눌러 이동을 시작하십시오.
  • 이제 마우스를 사용하여 원하는 곳에 창을 놓으십시오.

영어 이외의 Windows 버전을 사용하는 경우 "R"및 "M"메뉴 선택 항목이 다를 수 있습니다.


8
귀하의 솔루션에 대한 많은 "Terje Mikal"덕분에 저를 구했습니다. 그러나 Windows 7이 좋은 오래된 솔루션 (작업 표시 줄의 앱 버튼을 마우스 오른쪽 버튼으로 클릭)을 제거한 후에 만 ​​문제가 발생한다는 것을 감안할 때 2013 년 6 월 18 일 17:45 "kmote"에 "Emthigious"라고 게시 한 더 나은 솔루션이 있습니다 2010 년 10 월 10 일 08:50 :«Windows 7에서 작업 표시 줄 버튼을
Michel Merlin

1
다른 모든 단계를 시도했지만 화살표 키로 움직임을 시작하는 것이 실제로 실제로 수행 한 것입니다 ... 와우. 그리고 나는이었다 응용 프로그램을 다시 설치에 가까이!
Philip

1
내가 다루는 응용 프로그램에서는 복원이 회색으로 표시되지만 Maximize는 해당 단계에서 작동하므로 이동이 필요하지 않습니다. 승리를 극대화하십시오!
Brian Bulkowski

나는 위와 같이 할 수 있지만 다음 콤보는 나를 위해 작동, Alt + Tab 키를, Alt + 공간, M은 다음 Esc 키를 누르면,이 또한 작동하는 것 같다
에서 Mz

거의 2020 년이며 여전히이 문제를 다루고 있습니다.
Mert

14

Windows 10의 경우 이전 키를 커서 키 트릭으로 이동 Shift하려면 작업 표시 줄에서 상황에 맞는 메뉴를 열 때 키를 눌러야합니다.

여기에 이미지 설명을 입력하십시오

괴짜 방법 에서 정보


3
현재 Windows 10 빌드에서는 작업 표시 줄 위로 마우스를 가져간 후 잠시 동안 기다리면 창의 축소판보기가 나타납니다. 축소판을 마우스 오른쪽 버튼으로 클릭하면 Shift- 클릭과 같이 "오래된"컨텍스트 메뉴가 나타납니다.
Coderer

1
@ Coderer : 의견은 정말 도움이됩니다. 나는 그들이 그것을 완전히 제거했다고 생각했다.
Oak_3260548

나는 이것에 대해 완전히 잊었다! 작업 표시 줄 버튼이 하나의 창을 나타내는 경우 마우스 오른쪽 버튼으로 클릭 할 수도 있다고 생각합니다. 해당 응용 프로그램에 대해 둘 이상의 창이있는 경우 다른 상황에 맞는 메뉴가 나타납니다.
코더

12

작업 표시 줄에서 프로그램 단추를 마우스 오른쪽 단추로 클릭 한 다음 "이동"을 클릭하십시오. 이제 키보드의 화살표 버튼을 사용하여 창을 볼 수있는 곳으로 이동할 수 있습니다. 약간의 삐걱 거리는 소리가 필요합니다. 때로는 창문이 모니터 가장자리에 "고착"됩니다. 마우스를 사용해 볼 수도 있지만 창을 아직 볼 수 없다면 키보드가 약간 더 안정적입니다. ;-)


2
키보드에 대해서는 몰랐지만 마우스가 화면에 없으면 마우스를 사용할 수 없습니다. 이미 시도했습니다.
Matthew Scharley

2
시스템에 비표준 항목이없는 경우를 제외하고 화면이 꺼져 있어도 화살표 키를 사용할 수 있어야합니다. 이것은 항상이 문제가 발생하는 사람들에게 표준 응답이었습니다.
music2myear

9
또한 하나 이상의 화살표 키를 누른 후 창은 마우스에 "연결되어"있으며 마우스를 사용하여 마우스를 움직일 수 있습니다 (클릭하지 않고도!)이 하나의 키 플러스 마우스 방식은 일반적으로 키만 사용하는 것보다 빠릅니다.
Daniel Rikowski 2016 년

8
Windows 7에서는 작업 표시 줄 단추를 SHIFT- 오른쪽 클릭해야합니다.
kmote

이것은 나를 위해 일한 유일한 솔루션입니다 ...
sebagomez

8

작업 표시 줄이 나타나기 전에이 문제를 해결 Alt+Space하여 창 메뉴를 표시 한 다음 M이동 기능을 사용했습니다. 그러면 화살표 키를 사용하여 창을 화면에서 다시 이동할 수 있습니다.


+1은 화면이 최대화 될 때 움직이지 않는다는 경고와 함께, 창이 단순히 "한계를 넘어서"가 아니라 더미 화면에있는 경우 문제가 될 수 있습니다. 그것들은 최대화가 점유 화면의 전체 해상도를 커버해야하므로 OP에 대한 것일 수 있습니다.
mckenzm

8

또 다른 빠른 방법은 작업 표시 줄을 r- 클릭하고 캐스케이드 Windows를 선택하는 것입니다.


4
이것은 내 모든 열려있는 창에 영향을 미칠 것이기 때문에 그 일의 다소 추한 방법이다 (그리고 나는 보통뿐만 아니라이어야 브라우저를 열 필요가 없습니다 대여섯 다른 경우)
매튜 Scharley

1
그러나 가장 빠릅니다. 또한 화면에서 벗어난 창을 닫고 그 후에 실행 취소 계단식을 사용하여 창의 위치를 ​​복원 할 수 있습니다. 시도 할 수 없기 때문에 화면 밖에서 창 위치를 해당 위치로 복원할지 모르겠습니다 (모니터 하나만 있음).
T. Kaltnekar

5

나는이 문제에 부딪 쳤고 전혀 아무것도 효과가 없었다. 그래서 작업 관리자로 가서 화면이 아닌 프로그램을 마우스 오른쪽 버튼으로 클릭했습니다. 작동하지 않거나 전면으로 전환했습니다. 참고로, 이것은 정적 창이므로 작업 표시 줄을 통해 최대화를 사용할 수 없습니다. 그러나 작업 관리자를 통해 최대화하면 기본 디스플레이에 표시됩니다! 거기에서 창으로 필요한 모든 것을 할 수 있습니다. :)


이 답변에 감사드립니다. 작업 관리자에서 마우스 오른쪽 버튼을 클릭하고 최대화하면 나에게 도움이되었습니다.
코더

5

편집 : 의견에 따라 중단

앞으로이 문제를 빠르게 해결하고 듀얼 스크린 위에 응용 프로그램을 배치하려면 Winsplit Revolution을 추천 할 수 있습니다 . Ctrl-Alt와 숫자 키패드 키를 누르기 만하면이 문제를 해결하여 원하는 위치에 창을 다시 배치 할 수 있습니다.


불행히도 더 이상 무료가 아닙니다
Charbel

예, 괜찮아 보이지만 지불하고 싶지 않으면 지불하지 않는 엄격한 정책이 있습니다. Lastpass 또는 Acronis True Image와 유사합니다. 그리고 내 일정으로 문제가 다시 발생하기 30 일 이상이 걸릴 수 있으므로 시험 기간이 효과가 없습니다.
SDsolar

1
WinSplit 혁명은 불행하게도 중단하고, 새로운 업데이트가오고있다되었습니다 USD $ (19) 현재, MaxTo ","로 대체. "
TT--

1
WinSplit-혁명 이다 프리웨어 및 위해 계속 사용할 수 있습니다 다운로드 당신이 경우 검색 그것을 위해. 마지막 버전은 2011 년에 출시 된 11.04입니다. Windows 10에서 작동합니다. 수정 된 v9.02 소스는 GitHub에서 WinSplit-Reloaded로 제공 됩니다. 멋진 제품입니다.

@Ben, 링크 주셔서 감사합니다. 나는 답변의 링크로 이동하여 그 정보를 인용했습니다. 이제는 페이지에 "WinSplit Revolution을 더 이상 사용할 수 없지만 훌륭한 대안을 제공합니다."라는 내용이 표시됩니다. GitHub 포크에 대한 정보는 유용한 정보이며 특히 "2009 년에 공개 된 버전 9.02"를 언급합니다.
TT--

3

Shove-it 이라는 멋진 작은 도구를 사용합니다.이 도구 는 화면 가장자리 밖에 어떤 창이 있는지 확인하고 다시 화면에 다시 밀어 넣습니다. 그것은 고대 소프트웨어이며 홈페이지는 그것을 증명하지만 모든 Windows 버전에서 작동합니다.


링크는 이제 죽었다 :-(
danio

:-( 반면에,이 솔루션은 수명이 다했을 수도 있습니다. 그래도 계속 발생합니까? 마지막으로 이것을 필요로한지 몇 년이
지났습니다


설치 프로그램이 자동으로 잠 깁니다 (Windows 7의 경우).
mhenry1384

@ 그것을 잘 mhenry1384 되고 , 우리는 정말 새로운 작업을 14 세 (32 비트) 기대할 수 없습니다 버전을 ..... (64 비트?)
의 Torben Gundtofte-Bruun은

3

Tk를 기반으로하는 Windows 7의 Git GUI 에서이 문제에 부딪 쳤으므로 Windows에서 때때로 이상한 방식으로 결함이 발생합니다. Alt-Space를 치고 이동 명령을 사용하여 다시보기로 다시 만들려고했지만 멈추는 것처럼 보였습니다. 그것을 최대화하면 다시 가져올 수 있지만 창 모드로 되 돌리면 다시 사라집니다.

내가 한 것은 최대화하고 제목 표시 줄을 잡고 화면의 측면으로 드래그하여 Aero Snap이 화면 크기의 절반으로 크기를 조정하여 창 모드로 설정하는 것입니다. 그 후 화면 측면에서 드래그하여 제어권을 다시 얻었습니다.


많은 답변이 더 많이지지되었지만 하나의 답변이 저에게 도움이되지 않았습니다. 그렇습니다.
Dan Nissenbaum

Git GUI도 나에게 가져 왔지만 Shift-RightClick (작업 표시 줄 아이콘), 이동, 화살표 키 및 마우스 (창을 원하는 위치에 놓기) 조합으로 해결했습니다. Emthigious / Brad Patton의 솔루션이 작동합니다.
mcalex

1

winamp와 같은 문제가있었습니다. 지금까지 찾은 유일한 (불만족스러운) 해결책 : 화면 해상도를 다른 것으로 바꾸십시오.

도마


1

NIRSOFT WinLister를 사용할 수 있습니다. 클래식 테마를 사용하는 경우 Windows 7에서 "이동"방법을 사용할 수 없으며 다른 여러 가지 방법이 실패하여 "다른 모든 방법이 실패한 경우"대안을 게시하고 있습니다.

  1. WinLister 응용 프로그램을 여기에서 다운로드 하십시오 .

  2. WinLister를 관리자로 실행하고 화면에서 다시 이동하려는 창을 선택하십시오. 관리자 권한으로 실행하지 않으면 응용 프로그램에서 창을 이동할 수있는 기능이 제공되지 않습니다.

  3. 마우스 오른쪽 버튼을 클릭하고 "Center Selected Windows"를 선택하면 완료됩니다!

스크린 샷은 여기에 있습니다 .


1
유용한 팁-Alt-Space는 화면에서 벗어난 하위 창이 아닌 소유 창 탐색기 창에 대한 메뉴 만 열었 기 때문에 이것이 MS TFS 전동 도구에서 나에게 유일한 솔루션입니다.
danio

1

경우에 따라 원격 위치에 여러 화면이 있더라도 해당 위치에서 해당 화면에 액세스하지 못할 수 있습니다. 화면에없는보기가 잠겨 있기 때문에 키 명령이 작동하지 않습니다.

이 경우 응용 프로그램의 추가 인스턴스를 열 수있는 경우 추가하십시오. 처음 몇 개의 인스턴스는 작업 표시 줄에 더 많은 팬텀 창으로 표시됩니다. 계속하세요 결국 기본보기가 채워지기 시작합니다. 그런 다음 작업 표시 줄 아이콘을 사용하여 오프 스크린 인스턴스를 마우스 오른쪽 단추로 클릭하고 닫습니다. 오프 스크린 인스턴스가 열리지 않으면 기본 화면에서 인스턴스를 닫습니다. 다음에 해당 응용 프로그램을 열면 "오프 카메라"가 아닌 기본 화면에 해당 응용 프로그램이 나타납니다.


1
“원격 위치”,“귀하의 위치”등… 왜 사용자가 "화면에없는보기에서 잠겼습니까"?
Scott

그는 VM, Citrix, RDP 등을 의미합니다. 전화기에서 멀티 -4K를 읽지 않을 것입니다. 더미 스크린의 경우에도 마찬가지입니다. 일부 회사 사용자는 HDMI 데스크톱을 넣어서 위임 된 데스크탑 항목을 보이지 않게합니다. 1 개의 실제 화면으로 돌아 가면 다시 이동합니다.
mckenzm

1

창을 선택하십시오 (예 : Alt+ 사용 Tab). 그런 다음 Alt+를 누른 상태 F7에서 화살표 키를 사용하여 창을 다시보기로 이동하십시오. 끝난.

숨겨진 창이 어디에 있는지 맹목적으로 알기 어려운 경우가 있습니다 (따라서 화면으로 이동하는 방법). 창을 선택하는 동안 애니메이션이 도움이 될 수 있습니다. 설정으로 인해 (노트북 화면 상단에 두 번째 화면을 사용하는 경우가 있음) 화면 바깥에 나타나는 창은 대개 아래에 있습니다. Alt+ F7+를 누르고 있으면 Up볼 수 있습니다.


1

PowerShell에 익숙한 사람은 다음을 시도하십시오.

  • 아래 코드를 복사하여 PowerShell ISE 세션에 붙여 넣습니다.
  • 히트 런
  • 화면 외부 창을 활성화하려면 Alt + Tab을 누르십시오.
  • 잠시 기다립니다 (스크립트에서 RUN을 누른 후 5 초)
  • 창이 나타납니다.

창이 메인 창이면 화면의 왼쪽 상단으로 이동합니다.

창이 다른 프로그램의 자식 창인 경우, 왼쪽 위 모서리는 부모 창의 왼쪽 위 모서리와 정렬됩니다.

Add-Type @"
    using System;
    using System.Runtime.InteropServices;

    // https://msdn.microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx
    public struct RECT 
    {
        public long left;
        public long top;
        public long right;
        public long bottom;
    }

    public class User32WinApi 
    {

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx
        /*
            Gets the handle of the in-focus window
            NB: In some scenarios this can be NULL; so code needed to handle such an event
        */
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx
        /*
            top & left are always 0 (i.e. since the rectangle is relative to the window itself)
            bottom & right equal the windows hieght and width, respectively.
        */
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

    }

"@
$repaint = $true 
$windowSize = New-Object RECT

"Quick; get the window you're after in focus; you have 5 seconds..."
Start-Sleep -Seconds 5 #allow 5 seconds for the user to get the window they're after in focus (e.g. using ALT+TAB / whatever)
$activeWindow = [User32WinApi]::GetForegroundWindow()
if ($activeWindow) {
    if([User32WinApi]::GetClientRect($activeWindow, [ref]$windowSize)) {
        if ([User32WinApi]::MoveWindow($activeWindow, 0, 0, $windowSize.right, $windowSize.bottom, $repaint)) {
            "Window moved successfully (hope you agree!)"
        } else {
            Write-Warning "Failed to move the active window"
        }
    } else {
        Write-Warning "Failed to get size of the active window"    
    }
} else {
    Write-Warning "No active window found"    
}

여기에 원래 코드 : https://gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/


0

작업 표시 줄에 커서를 놓습니다. 마우스 오른쪽 버튼으로 클릭 쇼 창 나란히. 창을 화면에 가져옵니다. 마지막으로 작업 표시 줄에 커서를 가져 오십시오. 창을 나란히 표시 취소를 선택하십시오.


0

당신은 또한 사용할 수 있습니다 UltraMon 다음 또는 이전 모니터에 창을 이동하려면 키보드 단축키를 설정하는 (비 무료, 윈도우, GUI)를.

여기에 이미지 설명을 입력하십시오


0

에서 Windows에서 바로 가기 하단 / 상단 모니터로 창을 이동 하여 Tymric :

AHK 스크립트를 작성했습니다.

용법:

Win+ Alt+ Arrow: 화살표로 방향이 표시된 모니터로 활성 창을 이동합니다. 설정에서 모니터 2에서 또는 모니터 3에서 오른쪽으로 올라 가려고하면 창이 화면 밖으로 이동 될 수 있습니다. 나중에 업데이트하겠습니다.

Win+ Alt+ Number: 활성 창을 주어진 모니터 번호로 이동

#Persistent

SysGet, MonitorCount, MonitorCount


#!Up::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYneg%
  return
#!Down::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYpos%
  return
#!Left::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXneg%, %yPos%
  return
#!Right::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXpos%, %yPos%
  return

#!1::
  GoSub CalculateDisplacement
  WinMove, A, , %xPosOn1%, %yPosOn1%
  return

#!2::
  if (MonitorCount > 1) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn2%, %yPosOn2%
  }
  return

#!3::
  if (MonitorCount > 2) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn3%, %yPosOn3%
  }
  return

#!4::
  if (MonitorCount > 3) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn4%, %yPosOn4%
  }
  return

#!5::
  if (MonitorCount > 4) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn5%, %yPosOn5%
  }
  return

#!6::
  if (MonitorCount > 5) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn6%, %yPosOn6%
  }
  return

#!7::
  if (MonitorCount > 6) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn7%, %yPosOn7%
  }
  return

#!8::
  if (MonitorCount > 7) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn8%, %yPosOn8%
  }
  return

#!9::
  if (MonitorCount > 8) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn9%, %yPosOn9%
  }
  return


CalculateDisplacement:
  WinGetPos, xPos, yPos, , , A
  Loop, %MonitorCount% {
    SysGet, MonitorDimension, Monitor, %A_Index%
    if (xPos > MonitorDimensionLeft and xPos < MonitorDimensionRight and yPos < MonitorDimensionBottom and yPos > MonitorDimensionTop) {
      currentMonitor = %A_Index%
    }
  }
  SysGet, thisMonitor, Monitor, %currentMonitor%
  displaceXpos := xPos + thisMonitorRight - thisMonitorLeft
  displaceYpos := yPos + thisMonitorTop - thisMonitorBottom
  displaceXneg := xPos - thisMonitorRight + thisMonitorLeft
  displaceYneg := yPos - thisMonitorTop + thisMonitorBottom
  Loop, %MonitorCount% {
    SysGet, nextMonitor, Monitor, %A_Index%
    xPosOn%A_Index% := xPos - thisMonitorLeft + nextMonitorLeft
    yPosOn%A_Index% := yPos - thisMonitorTop + nextMonitorTop
  }
  return

0

실행시 화면 외부 창을 화면 위로 자동으로 이동시키는 Borderline 이라는 도구를 작성했습니다 . 필요할 때 실행해야합니다 (키보드 단축키를 지정하거나 시작 메뉴에 배치 할 때 가장 잘 작동 함). 그러나 항상 백그라운드에서 실행되고 있지는 않습니다.


0

때로는 이것이 해결되었습니다.

  • WinKey+ 클릭P
  • Extend또는 다른 옵션을 선택하면 모든 창이 계단식으로 표시됩니다. 원하는 창을 기본 화면으로 이동하십시오.

-1

오프 스크린으로 열리는 창을 이동하는 방법?

화면 해상도를 일시적으로 낮추고 마우스로 상단 막대를 잡고 가운데를 이동하십시오. 시스템이 자동으로 해상도를 복원 할 때까지 기다리십시오.

  1. DeskTop-> 화면 해상도
  2. 모니터를 선택하고 현재 설정에서 약간 낮은 해상도로 변경하십시오.
  3. 시스템에 새로운 해상도가 표시되고 30 초 동안 유지할 것인지 되돌릴 것인지 묻습니다.
  4. 30 초 이내에 놓친 창을 잡고 중앙으로 옮깁니다.
  5. 타임 아웃이 자동으로 되돌아 오기를 기다립니다.

창이 이동했습니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.