현재 커서 위치까지 위의 모든 셀을 평가하는 명령 / 메뉴 항목 / 키보드 단축키가 있습니까? 여기에 초보적인 것을 놓치고 있다는 느낌이 듭니다 …
부록 : 사실, 셀 선택에 관한 것이므로 평가는 문제가 아닙니다.
코멘트
- Shift-Home Shift-Enter가 가능합니까? (홈이있는 키보드)
- 매우 유용합니다! 저는 ‘이 기능을 WRI에 몇 년 동안 제안 해 왔습니다.
- @AndreasLauschke phew, 기쁩니다. ´ m 유일한 사람이 아닙니다. 그리고 이것을 메뉴 / 바로 가기에 추가하는 것은 아주 사소한 노력 인 것 같습니다. WRI에서 당신의 노력을 강화하기 위해 누구를 괴롭혀야합니까?
- 쓸모 없습니다. Forgeddaboudit. 하지만 Rolf ‘ s 또는 Martin ‘ s 또는 Rojo ‘의 솔루션을 init.m, 팔레트의 버튼에 놓거나 키 번역을 사용합니다. 저는 Caps Lock 키를 사용하지 않고 가장 쓸모없는 키라고 생각하므로 Caps Lock에 넣어 보겠습니다. 한 번에 두 가지 문제를 해결하고 해결 방법으로 전환합니다. 나는 ‘ Shift 및 Ctrl 키를 너무 많이로드하는 것을 좋아하지 않습니다. O / s 수준에서 다른 키 번역이 있기 때문에 Caps Lock은 무료이며 그렇지 않으면 쓸모가 없습니다.
li>
답변
한 가지 가능성은 개인 (Windows에서만 테스트 됨). 다음을 평가 한 다음 Mathematica를 다시 시작하면 Ctrl + Shift + Home 가 삽입 지점 위의 모든 셀을 선택합니다.
9.1.1의 경우. 사용 : Import["http://www.mertig.com/shortcuts.m"]
mymenuitems=" (* Select all cells upwards *) Item[KeyEvent[\"Home\", Modifiers -> {Control, Shift}], KernelExecute[ Module[{ enb = EvaluationNotebook[], tag = StringJoin[\"tmp\", ToString[Round[AbsoluteTime[]/$TimeUnit]]],editable }, editable = ReplaceAll[Editable, Options[enb, Editable]]; SetOptions[enb, Editable -> False]; SelectionMove[enb, Previous, Cell, AutoScroll -> False]; MathLink`CallFrontEnd[FrontEnd`SelectionAddCellTags[enb, {tag}]]; SelectionMove[enb, Before, Notebook, AutoScroll -> False]; SelectionMove[enb, Next, Cell, AutoScroll -> False]; While[FreeQ[ReplaceAll[CellTags,Options[NotebookSelection[]]], tag], MathLink`CallFrontEnd[FrontEnd`SelectionAddCellTags[enb, {tag}]]; SelectionMove[enb, Next, Cell, AutoScroll -> False] ]; NotebookFind[enb, tag, All, CellTags, AutoScroll -> False]; MathLink`CallFrontEnd[FrontEnd`SelectionRemoveCellTags[enb, {tag}]]; SetOptions[enb, Editable -> editable] ] ], MenuEvaluator -> Automatic ] "; With[{os = Switch[$OperatingSystem,"MacOSX","Macintosh","Windows","Windows","Unix","X"]}, Quiet@CreateDirectory@FileNameJoin[{$UserBaseDirectory,"SystemFiles","FrontEnd","TextResources",os}]; mykeyeventtrans=FileNameJoin[{$UserBaseDirectory,"SystemFiles","FrontEnd","TextResources",os,"KeyEventTranslations.tr"}]; (*If[FileExistsQ[mykeyeventtrans],DeleteFile@mykeyeventtrans];*) If[!FileExistsQ[mykeyeventtrans], CopyFile[FileNameJoin[{$InstallationDirectory,"SystemFiles","FrontEnd","TextResources",os,"KeyEventTranslations.tr"}],mykeyeventtrans] ]]; keytext=Import[mykeyeventtrans,"Text"]; mykeytext=StringReplace[keytext,"EventTranslations[{":>StringJoin["EventTranslations[{\n(* User defined *)\n",mymenuitems,",\n"]]; Export[mykeyeventtrans,mykeytext,"Text"];
댓글
- (… 심호흡을 …) 굉장합니다! 이것은 순금이며 종소리와 휘파람도 있습니다. 내 워크 플로우는 가장 진심으로 감사하고 축하하기 위해 일찍 집으로 돌아갑니다.
- @YvesKlett Gern geschehen. 실제로 SelectionEvaluate [SelectedNotebook []]을 추가했습니다. KernelExecute의 끝에는 보통 그렇게하는 것을 좋아하기 때문입니다. 원하든 원하지 않든 개인 작업 스타일의 문제라고 생각합니다. WRI의 사람들이 다르게 일할까요? 아니면 더 작은 노트북이 있습니까? 또는 ‘ 노트북을 실제로 테스트 용으로 사용하지 마십시오 (WWB가 모두를 괴롭히는가?). 누가 알아. 적어도 Mathematica에서 수정 / 개선하는 것은 충분히 쉽습니다.
- 리눅스에서도 제대로 작동하도록 약간 수정했습니다. 개인적으로 Control Shift UpKey가 더 쉽다는 것을 알았습니다. 그래서 제가 사용하는 것은
Import["http://www.mertig.com/shortcuts.m"]
- 9.0.1에 대한 주석을 업데이트했습니다. 사용 :
Import["http://www.mertig.com/shortcuts.m"]
- 아주, 아주 좋습니다. 주어진 코드는 Ctrl + Shift + 아래쪽 화살표를 사용하여 현재 셀 아래 의 모든 셀을 선택하는 바로 가기를 만들기 위해 (매우) 약간 수정할 수 있습니다.
mymenuitems
의 정의 뒤에 다음 줄을 추가합니다.mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];
.
답변
저는 방금 작업 중이며 여기에 부작용이 있습니다. 새로운 것은 없지만 팔레트 버튼으로 닫힌 형태로 제공됩니다.
CreatePalette[ Button["Evaluate above", With[{NB = InputNotebook[]}, Do[ SelectionMove[Experimental`FromCellIndex[NB, i], All, Cell]; SelectionEvaluate[NB]; , {i, 1, Experimental`ToCellIndex @ SelectedCells[NB][[1]]}] ]]]
커서는 셀 사이가 아니라 마지막에 평가 될 셀에 있어야합니다.
댓글
- 이렇게 시간을 절약 해주셔서 정말 감사합니다! (Hehe, 드디어 감사 할만큼 충분한 포인트를 얻었습니다). 아시다시피
삐, ” 아래 모드를 게시했습니다. 저는 ‘ MMA를 충분히 자주 사용하지 않습니다. 여러 키 명령을 기억하십시오. ‘ ” 위에서 평가 ” 버튼 t 나는 어디에나 편리하게 둘 수 있습니다.
- @BillN 문제 없습니다 🙂 행운을 빕니다. 더 자주 여기에 오 셨으면 좋겠습니다. 🙂 내 답변을 고칠뿐만 아니라 🙂
Answer
@Kuba의 답변을 수정하여 위의 모든 셀을 다시 평가하고 선택한 셀을 포함하지만 “삐”소리가 나지 않습니다. (사소한 개선). 메인 루틴에 대해 @Kuba에게 감사드립니다. 원본과 마찬가지로이 코드는 단일 “위로 평가”버튼이있는 작은 팔레트 를 생성합니다. 편리한 위치 (예 : 작업 노트북 상단의 다른 메뉴 항목 옆). “위로 평가”단추가 작동하려면 셀 (모든 셀)을 선택해야합니다.
CreatePalette[ Button["Evaluate Above", With[{nbI = InputNotebook[]}, Do[ SelectionMove[Experimental`FromCellIndex[nbI, i], All, Cell]; If[TextString["Style" /. Developer`CellInformation[nbI][[1]]] === "Input", SelectionEvaluateCreateCell[nbI]];, {i, 1, Experimental`ToCellIndex@SelectedCells[nbI][[1]]}]],Method -> "Queued"]]
코드 변경은 평가할 입력 셀만 선택하고 다른 모든 셀 스타일에 대해서는 “건너 뛰기”(Null 결과 생성)를 선택합니다. 셀 스타일을 반환하는 명령에 대해 @John Fultz에게 감사드립니다 ( “선택한 셀의 스타일을 어떻게 얻을 수 있습니까?”에서). 입력되지 않은 세포에 대해 평가를 요청하면 “삐”소리가납니다. 이것은 Mathematica 11.0.1에서 잘 작동하는 것 같습니다.
저는 Mathematica를 처음 사용하며이 스레드가 한동안 활성화되지 않았습니다. 그래서 이제 쉬운 방법이 있는지 잘 모르겠습니다. 이를 수행하기 위해 (아무것도 찾을 수 없음) 또는 이와 같은 사용자 정의 루틴이 여전히 필요한지 여부.
2018 년 3 월 10 일 업데이트 : 버튼 옵션 메소드-> “대기 중”을 추가했습니다. “기본 버튼 평가 방법”선점 “으로 발생하는 시간 초과를 방지하기 위해. “대기 중”옵션은 시간 초과되지 않는 기본 링크의 버튼 기능을 평가하는 데 사용됩니다.
댓글
- 알려야 할 +1 나;) 나는 매일 사용하지 않기 때문에 ‘ 알지 못했습니다.)
- Sry @Kuba 🙂 I ‘ 이곳이 너무 새로워 서 ‘ 당신의 게시물에 댓글을 달 수있는 포인트가 아직 충분하지 않습니다 (hehe). 내가 할 때 큰 감사가 온다. 이것은 거대한 ” 번거로운 요소입니다 ” 감속기입니다.
- 감사합니다. 최신 정보. 이를 용이하게하기위한 프런트 엔드의 변경 사항은 알지 못하지만 Rolf ‘의 솔루션에 매우 만족합니다.
- @Yves Klett 허용 해 주셔서 감사합니다. 사용자 정의 함수가 여전히 필요하다는 것을 알고 있습니다.
- @BillN 파티에 오신 것을 환영합니다. : D
답변
다음을 실행하여 현재 셀 이전의 입력 셀을 평가할 수 있습니다.
Function[cobj, SelectionMove[cobj, Cell, All]; SelectionEvaluate[InputNotebook[]];]~ Scan~ TakeWhile[Cells[CellStyle -> "Input"], # =!= EvaluationCell[] &]; SelectionMove[EvaluationCell[], After, Cell];
댓글
- 만세! 지금 누락 된 유일한 것은 편리한 바로 가기입니다 (하지만 이미 @RolfMertig ´의 답변에서도 다루었습니다).
- 바로 가기 또는 팔레트의 버튼입니다. ‘ 다른 유용한 버튼과 함께 팔레트의 버튼에 추가 할 것입니다.
- ‘ EvaluationCell []
- @RolfMertig (이 경우에는
Experimental
PreviousCell []`)가 필요하므로 버튼에 삽입하기가 너무 쉽다고 생각하지 않습니다. 감각
답변
일반적으로 커서와 관련하여이 작업을 수행하는 방법을 모르겠지만 CellObject
“셀에 있으면 많은 일을 할 수 있습니다.
함수. 다음은 평가 노트북의 모든 셀을 선택합니다. 이상하게도 All
는 현재 노트북을 지정하고 있으며, After
및 Previous
는 Notebooks[]
를 평가하여 제공되는 노트북 목록의 각 요소입니다.
SelectionMove[EvaluationNotebook[], All, Notebook]
선택 항목은 다음에 따라 이동할 수 있습니다. CellGroup
. 이 버튼은 버튼 위의 각 CellGroup
를 점진적으로 선택합니다.
Button["Select previous cell group", SelectionMove[EvaluationNotebook[], Previous, CellGroup]]
함수는 몇 가지 예제를 제공하며이 함수를 사용하여 전체 셀뿐만 아니라 셀의 내부 내용을 선택할 수 있음을 보여줍니다.
나는 할 수있는 방법이 있다고 생각합니다. Mathematica가 SelectedCells
의 첫 번째 목록 이전에 CellObject
목록을 제공하도록 요청했지만 아직 거기에 도달하지는 않았습니다.
댓글
-
Most@Experimental
CellRange [First, EvaluationCell []]. Or with only documented functions,
TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ ExperimentalCellRange[First, EvaluationCell[]]
- 죄송합니다. 셀을 평가하기 전이라고 생각했습니다. 선택한 셀 대신
SelectedCell[]
를 사용합니다. - 그 ‘ 꽤 멋져요. ‘ CellRa를 가지고 놀아야합니다. nge. ‘ 이제 명령 완성 메뉴에 실험적 컨텍스트가 표시된다는 것을 믿을 수 없습니다.
- @Rojo 귀하의 첫 번째 댓글이 컨텍스트 백틱을 먹었고 나머지는 실제로는 그렇지 않습니다. 여기서 V9에서 작업하세요 … 자세히 설명 하시겠습니까?
- 예, 죄송합니다.
Most@Experimental`CellRange[First, EvaluationCell[]]
. 또는 문서화 된 함수 만 사용하면TakeWhile[Cells[], # =!= EvaluationCell[] &]
. 평가하기 전에CellObjects
목록을 제공해야합니다.