Gibt es eine Verknüpfung, um alle Zellen über der aktuellen Cursorposition auszuwählen?

Gibt es eine Befehls- / Menüeintrags- / Tastaturkürzel, um alle Zellen über / bis zur aktuellen Cursorposition auszuwerten? Ich habe das Gefühl, dass mir hier etwas Elementares fehlt …

Nachtrag : Tatsächlich geht es mehr um die Auswahl dieser Zellen, die Auswertung ist nicht das Problem als solches.

Kommentare

  • Shift-Home Shift-Enter vielleicht? (auf einer Tastatur mit Home)
  • EXTREM nützlich! Ich ‚ schlage diese Funktion der WRI seit mehreren Jahren vor.
  • @AndreasLauschke Puh, ich bin froh, dass ich ´ m bin Nicht der einzige. Und es scheint so ein kleiner Aufwand zu sein, dies dem Menü / den Verknüpfungen hinzuzufügen. Wen an der WRI sollten wir abhören, um Ihre Bemühungen zu verstärken?
  • Nutzlos. Forgeddaboudit. Sie können jedoch auch die Lösung von Rolf ‚ oder Martin ‚ oder Rojo ‚ verwenden ein init.m, um es auf eine Schaltfläche in einer Palette zu setzen, oder verwenden Sie die Tastenübersetzung. Ich habe keine Verwendung für die Feststelltaste, ich finde sie die nutzloseste Taste aller Zeiten, also denke ich darüber nach, sie auf die Feststelltaste zu setzen. Löst zwei Probleme gleichzeitig und verwandelt sie in Lösungen. Ich mag es nicht, ‚ die Umschalt- und Strg-Tasten zu sehr zu überladen, da ich andere Tastenübersetzungen für sie auf einer O / S-Ebene habe, aber die Feststelltaste ist kostenlos und ansonsten nutzlos.
  • @AndreasLauschke Ich mag die Feststelltaste zwei-in-eins. Kein unnötiges SHOUTING mehr! Hmm, ein produktiver Abend.

Antwort

Eine Möglichkeit besteht darin, Ihre persönliche (nur unter Windows getestet). Bewerten Sie Folgendes, starten Sie Mathematica neu und wählen Sie dann mit Strg + Umschalt + Start alle Zellen über der Einfügemarke aus.

Für 9.0.1. Verwenden Sie: 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"]; 

Kommentare

  • (… tief durchatmen …) FANTASTISCH! Dies ist reines Gold und auch mit Schnickschnack. Mein Workflow sendet aufrichtige Grüße und geht früh nach Hause, um zu feiern.
  • @YvesKlett Gern Ereignisse. Ich habe tatsächlich SelectionEvaluate [SelectedNotebook []] hinzugefügt. am Ende von KernelExecute, da ich das normalerweise gerne mache. Es ist eine Frage des persönlichen Arbeitsstils, ob man das will oder nicht. Vielleicht arbeiten die Leute an der WRI anders? Oder haben kleinere Notebooks? Oder verwenden Sie ‚ Notebooks nicht wirklich zum Testen (sind WWB-Freaks alle?). Wer weiß. Zumindest ist es ausreichend einfach, Dinge in Mathematica zu ändern / zu verbessern.
  • leicht modifiziert, um auch unter Linux korrekt zu funktionieren … Beachten Sie, dass ich Control Shift UpKey persönlich einfacher finde. Was ich verwende, kann also wie folgt verwendet werden: Import["http://www.mertig.com/shortcuts.m"]
  • Die Kommentare für 9.0.1 wurden aktualisiert. Verwenden Sie: Import["http://www.mertig.com/shortcuts.m"]
  • Sehr, sehr schön. Der angegebene Code kann (sehr) leicht geändert werden, um mithilfe von Strg + Umschalt + Abwärtspfeil eine Verknüpfung zu erstellen, die alle Zellen unter der aktuellen Zelle auswählt. Fügen Sie nach der Definition von mymenuitems einfach die folgende Zeile hinzu: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Antwort

Ich habe gerade an etwas gearbeitet und hier „ein Nebeneffekt. Nichts Neues, aber in geschlossener Form als Palettenschaltfläche angegeben:

CreatePalette[ Button["Evaluate above", With[{NB = InputNotebook[]}, Do[ SelectionMove[Experimental`FromCellIndex[NB, i], All, Cell]; SelectionEvaluate[NB]; , {i, 1, Experimental`ToCellIndex @ SelectedCells[NB][[1]]}] ]]] 

Der Cursor darf sich nicht zwischen Zellen befinden, sondern in der Zelle, die am Ende ausgewertet werden soll.

Kommentare

  • Vielen Dank für diese enorme Zeitersparnis, die Sie sich ausgedacht haben! (Hehe, ich habe endlich genug Punkte, um Ihnen zu danken.) Wie Sie wissen, habe ich Ihre Routine leicht geändert, um die “ Piepton, “ und postete den Mod unten. Ich benutze ‚ MMA nicht oft genug, um Erinnern Sie sich an eine Reihe von Schlüsselbefehlen, daher ist es ‚ schön, eine raffinierte kleine Palette mit der einen “ Bewertung über “ Taste drauf tha t Ich kann bequem überall platzieren.
  • @BillN Kein Problem 🙂 Viel Glück und ich hoffe, Sie kommen öfter hierher 🙂 Nicht nur, um meine Antworten zu korrigieren 🙂

Antwort

Dies ist eine Modifikation der Antwort von @Kuba, bei der erneut alle Zellen über und einschließlich der ausgewählten Zelle ausgewertet werden, jedoch ohne den „Piepton“. (eine kleine Verfeinerung). Danke @Kuba für die Hauptroutine. Wie beim Original generiert der Code eine dinky -Palette mit einer einzelnen Schaltfläche „Oben auswerten“, die dann an einer beliebigen platziert werden kann günstige Position (z. B. neben den anderen Menüpunkten oben auf Ihrem Arbeitsnotizbuch). Eine Zelle (eine beliebige Zelle) muss ausgewählt sein, damit die Schaltfläche „Oben auswerten“ funktioniert.

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"]] 

Bei der Codeänderung werden nur Eingabezellen zur Auswertung ausgewählt, wobei für alle anderen Zellstile „übersprungen“ wird (ein Null-Ergebnis generiert wird). Vielen Dank an @John Fultz für den Befehl, der Zellstile zurückgibt (unter „Wie kann ich den Stil ausgewählter Zellen ermitteln?“). Offensichtlich würde ein „Piepton“ auftreten, wenn nicht eingegebene Zellen zur Auswertung aufgefordert würden. Dies scheint mit Mathematica 11.0.1 gut zu funktionieren.

Ich bin neu in Mathematica und dieser Thread war eine Weile nicht aktiv. Daher bin ich mir nicht sicher, ob es jetzt einen einfachen Weg gibt Um dies zu tun (kann nichts finden) oder ob eine benutzerdefinierte Routine wie diese noch erforderlich ist.

Update 10.03.18: Ich habe die Button-Option Methode -> „Queued“ hinzugefügt „Um das Timeout zu verhindern, das bei der Standard-Button-Bewertungsmethode“ Preemptive „auftritt. Die Option „In Warteschlange“ wird verwendet, um Schaltflächenfunktionen auf dem Hauptlink auszuwerten, bei denen keine Zeitüberschreitung auftritt.

Kommentare

  • +1, die Sie hätten mitteilen sollen Ich;) Ich war ‚ nicht bewusst, da ich es nicht täglich benutze;)
  • Sry @Kuba 🙂 Ich ‚ Ich bin so neu hier, dass ich ‚ noch nicht genug Punkte habe, um Ihren Beitrag zu kommentieren (hehe). Ein großes Dankeschön kommt, sobald ich es tue. Dies ist ein riesiger “ Ärgerfaktor “ Reduzierer.
  • Vielen Dank für den aktualisieren. Mir sind keine Änderungen im Frontend bekannt, um dies zu erleichtern, aber ich bin sehr zufrieden mit der Lösung von Rolf ‚.
  • @Yves Klett Vielen Dank, dass Sie mich zugelassen haben wissen, dass eine benutzerdefinierte Funktion noch erforderlich ist.
  • @BillN Willkommen auf der Party: D

Antwort

Sie können die Eingabezellen vor der aktuellen Zelle auswerten, indem Sie diese

Function[cobj, SelectionMove[cobj, Cell, All]; SelectionEvaluate[InputNotebook[]];]~ Scan~ TakeWhile[Cells[CellStyle -> "Input"], # =!= EvaluationCell[] &]; SelectionMove[EvaluationCell[], After, Cell]; 

Kommentare

    ausführen

  • Hurra! Jetzt fehlt nur noch eine praktische Verknüpfung (diese wird jedoch auch bereits durch die Antwort von @RolfMertig ´ abgedeckt).
  • Verknüpfung oder Schaltfläche in einer Palette. Ich ‚ werde dies wahrscheinlich zusammen mit anderen nützlichen Schaltflächen auf eine Schaltfläche in einer Palette setzen.
  • Ich ‚ Ich glaube nicht, dass dies so einfach in eine Schaltfläche einzufügen ist, da Sie in diesem Fall EvaluationCell []
  • @RolfMertig benötigen. Experimental PreviousCell [] `macht mehr sense

Antwort

Ich habe keine Ahnung, wie ich dies in Bezug auf den Cursor im Allgemeinen tun soll, aber mit CellObject Sie können viel tun, wenn Sie sich in einer Zelle befinden.

Mit Funktion. Im Folgenden werden alle Zellen im Bewertungsnotizbuch ausgewählt. Beachten Sie, dass All seltsamerweise das aktuelle Notizbuch angibt, After und Previous das jeweilige Element der Liste der Notizbücher, die durch Auswerten von Notebooks[] bereitgestellt werden.

SelectionMove[EvaluationNotebook[], All, Notebook] 

Die Auswahl kann entsprechend verschoben werden CellGroup. Diese Schaltfläche wählt nach und nach jedes CellGroup über der Schaltfläche aus:

Button["Select previous cell group", SelectionMove[EvaluationNotebook[], Previous, CellGroup]] 

Die Dokumentation für das bietet einige Beispiele und zeigt, dass die Funktion verwendet werden kann, um den internen Inhalt einer Zelle sowie ganze Zellen auszuwählen.

Ich denke, es gibt eine Möglichkeit, wie ich kann Lassen Sie sich von Mathematica die Liste von CellObject vor dem ersten der SelectedCells geben, aber ich bin noch nicht ganz da.

Kommentare

  • Most@Experimental CellRange [Zuerst EvaluationCell []] . Or with only documented functions, TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ Experimental CellRange[First, EvaluationCell[]]
  • Entschuldigung, ich dachte, es war vor der Auswertung der Zelle, verwenden Sie stattdessen SelectedCell[] für die ausgewählte Zelle
  • Diese ‚ s ziemlich cool, ich ‚ muss mit CellRa herumspielen nge. Ich kann ‚ nicht glauben, dass der experimentelle Kontext jetzt im Befehlsabschlussmenü angezeigt wird.
  • @Rojo Ihr erster Kommentar hat einen Kontext-Backtick aufgefressen und der Rest nicht wirklich Arbeiten Sie hier an V9 … möchten Sie das näher erläutern?
  • Ja, sorry, Most@Experimental`CellRange[First, EvaluationCell[]]. Oder mit nur dokumentierten Funktionen TakeWhile[Cells[], # =!= EvaluationCell[] &]. Das sollte eine Liste der CellObjects vor der auswertenden geben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.