Er der en genvej til at vælge alle celler over den aktuelle markørposition?

Er der en kommando / menuindgang / tastaturgenvej til at evaluere alle celler over / op til den aktuelle markørposition? Jeg har en fornemmelse af, at jeg mangler noget elementært her …

Addendum : Faktisk er det handler mere om udvælgelse af disse celler, evaluering er ikke problemet som sådan.

Kommentarer

  • Skift-Hjem Skift-Indtast måske? (på et tastatur, der har Home)
  • UDTRYDT nyttigt! Jeg ‘ har foreslået denne funktion til WRI i flere år.
  • @AndreasLauschke phew, glad for at jeg ´ m ikke den eneste. Og det virker sådan en mindre indsats for at tilføje dette til menuen / genveje. Hvem på WRI skal vi bugge for at styrke din indsats?
  • Ubrugelig. Forgeddaboudit. Men du kan sætte Rolf ‘ s eller Martin ‘ s eller Rojo ‘ s løsning i en init.m, at sætte den på en knap i en palet eller bruge keytranslate. Jeg har ikke brug for Caps Lock-tasten, jeg finder den den mest ubrugelige nøgle nogensinde, så jeg overvejer at sætte denne på Caps Lock. Løser to problemer på én gang og gør dem til løsninger. Jeg kan ikke ‘ lide at overbelaste Shift- og Ctrl-tasterne for meget, da jeg har andre nøgleoversættelser til dem på et o / s-niveau, men Caps Lock er gratis og ellers ubrugelig.
  • @AndreasLauschke Jeg kan lide Caps Lock to-i-en-fix. Ikke mere unødvendigt sHOUTING også! Hmm, en produktiv aften.

Svar

En mulighed er at ændre din personlige KeyEventTranslations.tr (kun testet i Windows). Evaluer følgende, genstart derefter Mathematica, så Ctrl + Skift + Hjem markerer alle celler over indsættelsespunktet.


I 9.0.1. brug: 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"]; 

Kommentarer

  • (… trækker en dyb indånding …) FANTASTISK! Dette er rent guld og med klokker og fløjter også. Min arbejdsgang sender hjertelig hilsen og går hjem tidligt for at fejre.
  • @YvesKlett Gern geschehen. Jeg tilføjede faktisk SelectionEvaluate [SelectedNotebook []]; i slutningen af KernelExecute, da jeg normalt kan lide at gøre det. Det er et spørgsmål om personlig arbejdsstil, antager jeg, om man vil have det eller ej. Måske arbejder folk på WRI anderledes? Eller har du mindre notesbøger? Eller brug ‘ ikke brug af notesbøger virkelig til testning (er WWB-freaks alle sammen?). Hvem ved. I det mindste er det tilstrækkeligt let at ændre / forbedre ting i Mathematica.
  • let modificeret til at fungere også korrekt under Linux … Bemærk, at jeg personligt finder Control Shift UpKey lettere. Så hvad jeg bruger kan bruges som Import["http://www.mertig.com/shortcuts.m"]
  • Opdateret kommentarerne til 9.0.1. Brug: Import["http://www.mertig.com/shortcuts.m"]
  • Meget, meget flot. Den givne kode kan (meget) let modificeres for at oprette en genvej, der markerer alle celler under den aktuelle celle ved hjælp af Ctrl + Shift + DownArrow. Efter definitionen af mymenuitems skal du blot tilføje følgende linje: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Svar

Jeg arbejdede bare på noget og her er en bivirkning. Intet nyt, men givet i lukket form som paletknap:

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

Markøren må ikke være mellem celler, men i den celle, der er beregnet til at blive evalueret i slutningen.

Kommentarer

  • Mange tak for denne massive tidsbesparelse, du kom på! (Hehe, jeg fik endelig nok point til at takke dig). Som du ved, ændrede jeg din rutine lidt for at slippe af med ” bip, ” og sendte modet nedenfor. Jeg bruger ikke ‘ MMA ofte nok til at husk en masse nøglekommandoer, så det ‘ er rart at have en smidig lille palet med den ” Evaluer over ” -knappen på den tha t Jeg kan nemt placere hvor som helst.
  • @BillN Intet problem 🙂 Held og lykke, og jeg håber, du kommer oftere her 🙂 Ikke kun for at rette mine svar 🙂

Svar

Dette er en ændring af @Kubas svar, evaluerer igen alle celler ovenfor og inkluderer den valgte celle, men uden “bip” (en mindre raffinement). Tak @Kuba for hovedrutinen. Som med originalen genererer koden en dinky palet med en enkelt “Evaluer over” -knap, som derefter kan placeres til enhver praktisk placering (f.eks. ved siden af de andre menupunkter øverst på din arbejdsbog). En celle (en hvilken som helst celle) skal vælges for at knappen “Evaluer over” fungerer.

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

Kodeskiftet udvælger kun inputceller til evaluering, “springer over” (genererer et Null-resultat) for alle andre celletypografier. Tak @John Fultz for kommandoen, der returnerer celleformater (under “Hvordan kan jeg få typografien for valgte celler?”). Der ville åbenbart opstå et “bip”, hvis ikke-input-celler blev bedt om at blive evalueret. Dette ser ud til at fungere fint med Mathematica 11.0.1.

Jeg er ny på Mathematica, og denne tråd har ikke været aktiv i et stykke tid. Så jeg er ikke sikker på, om der nu er en eller anden nem måde at gøre dette indbygget (kan ikke finde noget), eller om en brugerdefineret rutine som denne stadig er påkrævet.

Opdatering 3/10/18: Jeg har tilføjet knapindstillingen Metode -> “I kø “for at forhindre timeout, der opstår med standardmetoden til evaluering af knapper” Forebyggende. ” Indstillingen “I kø” bruges til at evaluere knapfunktioner på hovedlinket, som aldrig går ud.

Kommentarer

  • +1 du burde have fortalt mig;) Jeg var ikke ‘ ikke opmærksom, da jeg ikke bruger det dagligt;)
  • Sry @Kuba 🙂 Jeg ‘ er så nyt her, jeg har ikke ‘ ikke nok point endnu til ikke engang at kommentere på dit indlæg (hehe). En stor tak kommer, når jeg først gør det. Dette er en kæmpe ” besværsfaktor ” reducering.
  • Tak for opdatering. Jeg er ikke opmærksom på nogen ændringer i frontend for at lette det, men jeg er meget tilfreds med Rolf ‘ s løsning.
  • @ Yves Klett Tak for at lade mig ved, at en brugerdefineret funktion stadig er påkrævet.
  • @BillN velkommen til festen: D

Svar

Du kan evaluere inputcellerne før den aktuelle celle ved at køre denne

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

Kommentarer

  • Hurra! Den eneste ting, der mangler nu, er en praktisk genvej (men dette er også allerede dækket af @RolfMertig ´ s svar).
  • genvej eller knap i en palet. Jeg ‘ Jeg lægger sandsynligvis dette på en knap på en palet sammen med andre nyttige knapper.
  • Jeg don ‘ synes ikke det er så let at sætte det på en knap, da du har brug for EvaluationCell []
  • @RolfMertig i så fald, Experimental PreviousCell [] `gør mere sense

Svar

Jeg aner ikke, hvordan man gør dette i forhold til markøren generelt, men ved at bruge CellObject du kan gøre meget, hvis du “er i en celle.

Der er ret meget, du kan gøre med SelectionMove -funktion. Følgende markerer alle cellerne i evalueringsbogen. Bemærk, at underligt All angiver den aktuelle notesbog, After og Previous det respektive element på listen over notesbøger leveret ved at evaluere Notebooks[].

SelectionMove[EvaluationNotebook[], All, Notebook] 

Valget kan flyttes i henhold til CellGroup. Denne knap vælger gradvist hver CellGroup over knappen:

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

Dokumentationen til SelectionMove -funktionen giver en hel del eksempler og viser, at funktionen kan bruges til at vælge det interne indhold i en celle såvel som hele celler.

Jeg tror der er en måde, jeg kan få Mathematica til at give mig listen over CellObject før den første af SelectedCells men jeg er ikke helt der endnu.

Kommentarer

  • Most@Experimental CellRange [First, EvaluationCell []] . Or with only documented functions, TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ Experimental CellRange[First, EvaluationCell[]]
  • Undskyld, jeg troede, det var før hte evaluerede cellen, brug SelectedCell[] i stedet for den valgte celle
  • At ‘ s ret sejt, jeg ‘ Jeg skal lege med CellRa nge. Jeg kan ‘ ikke tro på, at eksperimentel kontekst vises i kommandofuldførelsesmenuen nu.
  • @Rojo din første kommentar spiste et kontekst-backtick, og resten gør ikke rigtig arbejde på V9 her … vil du gerne uddybe?
  • Ja, undskyld, Most@Experimental`CellRange[First, EvaluationCell[]]. Eller med kun dokumenterede funktioner, TakeWhile[Cells[], # =!= EvaluationCell[] &]. Det skulle give en liste over CellObjects før den evaluerede.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *