Er det en kommando / menyoppføring / hurtigtast for å evaluere alle cellene over / opp til gjeldende markørposisjon? Jeg har følelsen av at jeg savner noe elementært her …
Addendum : Faktisk, det handler mer om valg av disse cellene, evaluering er ikke problemet som sådan.
Kommentarer
- Skift-Hjem Skift-Skriv inn kanskje? (på et tastatur som har Hjem)
- EKSTREMT nyttig! Jeg ‘ har foreslått denne funksjonen til WRI i flere år.
- @AndreasLauschke phew, glad jeg ´ m ikke den eneste. Og det virker som en så liten innsats å legge dette til i menyen / snarveiene. Hvem på WRI skal vi bugge for å styrke din innsats?
- Ubrukelig. Forgeddaboudit. Men du kan sette Rolf ‘ s eller Martin ‘ s eller Rojo ‘ s løsning i en init.m, for å sette den på en knapp i en palett, eller bruk keytranslate. Jeg har ikke bruk for Caps Lock-tasten, jeg synes den er den mest ubrukelige nøkkelen noensinne, så jeg tenker å sette dette på Caps Lock. Løser to problemer på en gang, og gjør dem til løsninger. Jeg liker ikke ‘ for mye, for jeg har andre nøkkeloversettinger for dem på et o / s-nivå, men Caps Lock er gratis og ellers ubrukelig.
- @AndreasLauschke Jeg liker Caps Lock to-i-ett-løsningen. Ikke mer unødvendig rensing også! Hmm, en produktiv kveld.
Svar
En mulighet er å endre din personlige KeyEventTranslations.tr
(bare testet på Windows). Evaluer følgende, start deretter Mathematica på nytt, så vil Ctrl + Skift + Hjem velge alle celler over innsettingspunktet.
For 9.0.1. bruk: 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
- (… trekker pusten dypt …) KJEMPEBRA! Dette er rent gull, og med bjeller og fløyter også. Arbeidsflyten min hilser hjertelig og går tidlig hjem for å feire.
- @YvesKlett Gern geschehen. Jeg la faktisk til SelectionEvaluate [SelectedNotebook []]; på slutten av KernelExecute, siden jeg vanligvis liker å gjøre det. Det er et spørsmål om personlig arbeidsstil antar jeg om man vil ha dette eller ikke. Kanskje folk på WRI jobber annerledes? Eller har du mindre notatbøker? Eller bruk ‘ ikke bærbare PC-er virkelig til testing (å være WWB-freaks alle sammen?). Hvem vet. I det minste er det tilstrekkelig enkelt å endre / forbedre ting i Mathematica.
- litt modifisert til å fungere også under Linux riktig … Legg merke til at jeg personlig synes Control Shift UpKey er enklere. Så det jeg bruker kan brukes som
Import["http://www.mertig.com/shortcuts.m"]
- Oppdatert kommentarene for 9.0.1. Bruk:
Import["http://www.mertig.com/shortcuts.m"]
- Veldig, veldig hyggelig. Den gitte koden kan (veldig) endres litt for å lage en snarvei som velger alle celler under den nåværende cellen, ved hjelp av Ctrl + Shift + DownArrow. Etter definisjonen av
mymenuitems
, er det bare å legge til følgende linje:mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];
.
Svar
Jeg jobbet bare med noe og her er en bivirkning. Ingenting nytt, men gitt i lukket form som palettknapp:
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 mellom cellene, men i cellen som er ment å bli evaluert til slutt.
Kommentarer
- Tusen takk for denne enorme tidsbespareren du kom på! (Hehe, jeg fikk endelig nok poeng for å takke deg). Som du er klar endret jeg rutinen din litt for å bli kvitt » pip, » og postet modet nedenfor. Jeg bruker ikke ‘ til å bruke MMA ofte nok til husk en haug med nøkkelkommandoer, så det ‘ er hyggelig å ha en fin liten palett med den » Evaluer over » -knappen på den t Jeg kan enkelt plassere hvor som helst.
- @BillN Ikke noe problem 🙂 Lykke til og jeg håper du kommer hit oftere 🙂 Ikke bare for å fikse svarene mine 🙂
Svar
Dette er en modifisering av @Kubas svar, og evaluerer igjen alle cellene ovenfor og inkluderer den valgte cellen, men uten «pipetone» (en mindre raffinement). Takk @Kuba for hovedrutinen. Som med originalen, genererer koden en dinky palett med en enkelt «Evaluer over» -knapp, som deretter kan plasseres når som helst praktisk beliggenhet (for eksempel ved siden av de andre menyelementene øverst på arbeidsboken). En celle (hvilken som helst celle) må velges for at «Evaluer over» -knappen skal fungere.
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"]]
Kodeendringen velger bare Input celler for evaluering, «hopper over» (genererer et null resultat) for alle andre cellestiler. Takk @John Fultz for kommandoen som returnerer cellestiler (under «Hvordan kan jeg få stilen til valgte celler?»). Åpenbart vil det hende et «pip» hvis celler som ikke inngår, ble bedt om å bli evaluert. Dette ser ut til å fungere bra med Mathematica 11.0.1.
Jeg er ny i Mathematica, og denne tråden har ikke vært aktiv på en stund. Så jeg er ikke sikker på om det nå er noen enkel måte for å gjøre dette innebygd (kan ikke finne noe), eller om en tilpasset rutine som dette fortsatt er nødvendig.
Oppdatering 3/10/18: Jeg har lagt til knappealternativet Metode -> «I kø «for å forhindre tidsavbrudd som oppstår med standard knappevurderingsmetode» Forebyggende. » Alternativet «Kø» brukes til å evaluere knappefunksjoner på hovedlenken, som aldri går ut.
Kommentarer
- +1 du burde ha fortalt meg;) Jeg var ikke ‘ t klar da jeg ikke bruker den på daglig basis;)
- Sry @Kuba 🙂 Jeg ‘ jeg er så ny her, jeg har ikke ‘ ikke nok poeng ennå til å kommentere innlegget ditt (hehe). En stor takk kommer når jeg gjør det. Dette er en stor » problemfaktor » reduksjon.
- Takk for Oppdater. Jeg er ikke kjent med noen endringer i frontend for å legge til rette for det, men jeg er veldig fornøyd med Rolf ‘ s løsning.
- @Yves Klett Takk for at du lot meg vet at det fortsatt er behov for en egendefinert funksjon.
- @ BillN velkommen til festen: D
Svar
Du kan evaluere inngangscellene før den nåværende cellen ved å kjøre denne
Function[cobj, SelectionMove[cobj, Cell, All]; SelectionEvaluate[InputNotebook[]];]~ Scan~ TakeWhile[Cells[CellStyle -> "Input"], # =!= EvaluationCell[] &]; SelectionMove[EvaluationCell[], After, Cell];
Kommentarer
- Hurra! Det eneste som mangler nå er en praktisk snarvei (men dette dekkes også allerede av @RolfMertig ´ s svar).
- snarvei eller knapp i en palett. Jeg ‘ Jeg legger sannsynligvis dette på en knapp på en palett, sammen med andre nyttige knapper.
- Jeg don ‘ t synes dette er så enkelt å sette inn i en knapp, siden du trenger EvaluationCell []
- @RolfMertig i så fall,
Experimental
PreviousCell [] `gjør mer sense
Svar
Jeg aner ikke hvordan jeg skal gjøre dette i forhold til markøren generelt, men ved å bruke CellObject
du kan gjøre mye hvis du er i en celle.
Det er ganske mye du kan gjøre med SelectionMove
-funksjon. Følgende vil velge alle cellene i evalueringsboken. Merk at ganske merkelig All
spesifiserer den nåværende notatblokken, vil After
og Previous
gi deg det respektive elementet i listen over notatbøker gitt ved å evaluere Notebooks[]
.
SelectionMove[EvaluationNotebook[], All, Notebook]
Valget kan flyttes iht. CellGroup
. Denne knappen vil gradvis velge hver CellGroup
over knappen:
Button["Select previous cell group", SelectionMove[EvaluationNotebook[], Previous, CellGroup]]
Dokumentasjonen for SelectionMove
-funksjonen gir mange eksempler, og viser at funksjonen kan brukes til å velge det interne innholdet i en celle så vel som hele celler.
Jeg tror det er slik jeg kan få Mathematica til å gi meg listen over CellObject
før den første av SelectedCells
men jeg er ikke helt der ennå.
Kommentarer
-
Most@Experimental
CellRange [First, EvaluationCell []]. Or with only documented functions,
TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ ExperimentalCellRange[First, EvaluationCell[]]
- Beklager, jeg trodde det var før han vurderte cellen, bruk
SelectedCell[]
i stedet for den valgte cellen - At ‘ s ganske kult, jeg ‘ jeg må leke med CellRa nge. Jeg kan ‘ ikke tro at eksperimentell kontekst vises i kommandofullføringsmenyen nå.
- @Rojo din første kommentar spiste opp en kontekst-backtick og resten egentlig ikke jobber med V9 her … vil du bry deg om å utdype det?
- Ja, beklager,
Most@Experimental`CellRange[First, EvaluationCell[]]
. Eller med bare dokumenterte funksjoner,TakeWhile[Cells[], # =!= EvaluationCell[] &]
. Det skal gi en liste overCellObjects
før den vurderes.