Finns det en genväg för att markera alla celler ovanför den aktuella markörpositionen?

Finns det ett kommando / menyinmatning / kortkommando för att utvärdera alla celler ovanför / upp till aktuell markörposition? Jag känner att jag saknar något elementärt här …

Tillägg : Faktum är att det handlar mer om val av dessa celler, utvärdering är inte problemet som sådant.

Kommentarer

  • Skift-Hem Skift-Ange kanske? (på ett tangentbord som har Home)
  • EXTREMT användbart! Jag ’ har föreslagit den här funktionen till WRI i flera år.
  • @AndreasLauschke phew, glad att jag ´ m inte den enda. Och det verkar en så liten ansträngning att lägga till detta i menyn / genvägarna. Vem på WRI ska vi bugga för att förstärka din ansträngning?
  • Nyttan. Forgeddaboudit. Men du kan sätta Rolf ’ s eller Martin ’ s eller Rojo ’ s lösning i en init.m, för att lägga den på en knapp i en palett, eller använd tangentöversättningen. Jag har ingen nytta av Caps Lock-tangenten, jag tycker att den är den värdelösaste nyckeln någonsin, så jag funderar över att sätta den på Caps Lock. Löser två problem på en gång och gör dem till lösningar. Jag gillar ’ att inte överbelasta Shift- och Ctrl-tangenterna för mycket, eftersom jag har andra nyckelöversättningar för dem på en o / s-nivå, men Caps Lock är gratis och annars värdelöst.
  • @AndreasLauschke Jag gillar Caps Lock två-i-ett-fix. Inget mer onödigt rensning också! Hmm, en produktiv kväll.

Svar

En möjlighet är att ändra din personliga KeyEventTranslations.tr (testas endast i Windows). Utvärdera följande, starta sedan om Mathematica, sedan väljer Ctrl + Skift + Hem alla celler ovanför insättningspunkten.


För 9.0.1. användning: 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

  • (… drar djupt andetag …) AWESOME! Detta är rent guld och med klockor och visselpipor också. Mitt arbetsflöde ger uppriktiga hälsningar och går hem tidigt för att fira.
  • @YvesKlett Gern geschehen. Jag lade faktiskt till SelectionEvaluate [SelectedNotebook []]; i slutet av KernelExecute, eftersom jag brukar göra det. Det är en fråga om personlig arbetsstil antar jag om man vill ha det här eller inte. Kanske jobbar människor på WRI annorlunda? Eller har du mindre bärbara datorer? Eller använd ’ för att inte använda anteckningsböcker för att testa dem (är WWB-freaks alla?). Vem vet. Det är åtminstone tillräckligt enkelt att modifiera / förbättra saker i Mathematica.
  • lite modifierade för att fungera även under Linux korrekt … Lägg märke till att jag personligen tycker att Control Shift UpKey är lättare. Så vad jag använder kan användas som Import["http://www.mertig.com/shortcuts.m"]
  • Uppdaterade kommentarerna för 9.0.1. Använd: Import["http://www.mertig.com/shortcuts.m"]
  • Mycket, mycket trevligt. Den givna koden kan (mycket) modifieras något för att skapa en genväg som markerar alla celler under den aktuella cellen med Ctrl + Shift + DownArrow. Efter definitionen av mymenuitems, lägg bara till följande rad: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Svar

Jag jobbade bara med något och här är en bieffekt. Inget nytt men ges i sluten 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 får inte vara mellan celler utan i cellen som är tänkt att utvärderas i slutet.

Kommentarer

  • Tack så mycket för denna massiva tidsbesparing du kom på! (Hehe, jag fick äntligen tillräckligt med poäng för att tacka dig). Som ni känner till ändrade jag din rutin något för att bli av med ” pip, ” och publicerade modet nedan. Jag ’ använder MMA inte tillräckligt ofta för att kom ihåg en massa nyckelkommandon, så det ’ är trevligt att ha en snygg liten palett med den ” Utvärdera ovanför ” -knappen på den t Jag kan bekvämt placera var som helst.
  • @BillN Inga problem 🙂 Lycka till och jag hoppas att du kommer hit oftare 🙂 Inte bara för att fixa mina svar 🙂

Svar

Detta är en modifiering av @Kubas svar, igen utvärderar alla celler ovan och inkluderar den valda cellen, men utan ”pipet” (en mindre förfining). Tack @Kuba för huvudrutinen. Som med originalet genererar koden en dinky palett med en enda ”Utvärdera ovan” -knapp, som sedan kan placeras vid valfri bekväm plats (t.ex. bredvid de andra menyalternativen högst upp på din bärbara dator). En cell (valfri cell) måste väljas för att knappen ”Utvärdera ovan” ska fungera.

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

Kodändringen markerar endast inmatningsceller för utvärdering, ”hoppar över” (genererar ett nollresultat) för alla andra cellstilar. Tack @John Fultz för kommandot som returnerar cellstilar (under ”Hur kan jag få stilen för valda celler?”). Uppenbarligen skulle ett ”pip” inträffa om icke-inmatade celler ombads att utvärderas. Detta verkar fungera bra med Mathematica 11.0.1.

Jag är ny på Mathematica, och den här tråden har inte varit aktiv på ett tag. Så jag är inte säker på om det nu finns något enkelt sätt för att göra detta inbyggt (kan inte hitta någonting), eller om en anpassad rutin som denna fortfarande krävs.

Uppdatering 3/10/18: Jag har lagt till knappalternativet Metod -> ”Kö ”för att förhindra tidsgränsen som sker med standardmetoden för utvärdering av knapp” Förebyggande. ” Alternativet ”Kö” används för att utvärdera knappfunktioner på huvudlänken, vilket aldrig går ut.

Kommentarer

  • +1 du borde ha sagt mig;) Jag var ’ inte medveten om det eftersom jag inte använder det dagligen;)
  • Sry @Kuba 🙂 Jag ’ jag är så ny här, jag har ’ jag har inte tillräckligt med poäng ännu för att ens kommentera ditt inlägg (hehe). Ett stort tack kommer när jag gör det. Detta är en enorm ” krångelfaktor ” reducerare.
  • Tack för uppdatering. Jag är inte medveten om några förändringar i frontend för att underlätta det, men jag är väldigt nöjd med Rolf ’ s lösning.
  • @Yves Klett Tack för att du låter mig vet att en anpassad funktion fortfarande krävs.
  • @BillN välkommen till festen: D

Svar

Du kan utvärdera inmatningscellerna före den aktuella cellen genom att köra denna

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

Kommentarer

  • Hurra! Det enda som saknas nu är en bekväm genväg (men detta täcks också redan av @RolfMertig ´ s svar).
  • genväg eller knapp i en palett. Jag ’ Jag lägger förmodligen detta på en knapp på en palett, tillsammans med andra användbara knappar.
  • Jag don ’ t tycker att det här är så lätt att sätta i en knapp, eftersom du behöver EvaluationCell []
  • @RolfMertig i så fall, Experimental PreviousCell [] `gör mer sense

Svar

Jag har ingen aning om hur man gör detta i förhållande till markören i allmänhet, men med CellObject du kan göra mycket om du är i en cell.

Det finns en hel del du kan göra med SelectionMove -funktion. Följande markerar alla celler i utvärderingsanteckningsboken. Observera att helt konstigt All anger den aktuella anteckningsboken, After och Previous respektive element i listan över anteckningsböcker som tillhandahålls genom att utvärdera Notebooks[].

SelectionMove[EvaluationNotebook[], All, Notebook] 

Valet kan flyttas enligt CellGroup. Den här knappen väljer successivt varje CellGroup ovanför knappen:

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

Dokumentationen för SelectionMove -funktionen ger en hel del exempel och visar att funktionen kan användas för att välja det interna innehållet i en cell såväl som hela celler.

Jag tror att det är så sätt jag kan få Mathematica att ge mig listan över CellObject före den första av SelectedCells men jag är inte riktigt där än.

Kommentarer

  • Most@Experimental CellRange [First, EvaluationCell []] . Or with only documented functions, TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ Experimental CellRange[First, EvaluationCell[]]
  • Tyvärr trodde jag att det var innan hte utvärderade cellen, använd SelectedCell[] istället för den valda cellen
  • Att ’ s ganska coolt, jag ’ jag måste leka med CellRa nge. Jag kan ’ inte tro att experimentella sammanhang visas i kommandofullständningsmenyn nu.
  • @Rojo din första kommentar åt ett kontextbacktick och resten inte riktigt arbetar med V9 här … skulle du vilja utarbeta?
  • Ja, förlåt, Most@Experimental`CellRange[First, EvaluationCell[]]. Eller med endast dokumenterade funktioner, TakeWhile[Cells[], # =!= EvaluationCell[] &]. Det borde ge en lista över CellObjects före utvärderingen.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *