Onko olemassa oikotietä kaikkien solujen valitsemiseksi kohdistimen nykyisen sijainnin yläpuolella?

Onko komentoa / valikkomerkintää / pikanäppäintä kaikkien solujen arvioimiseksi nykyisen kohdistimen yläpuolelle / ylöspäin? Minusta tuntuu siltä, että puuttuu jotain perusasioista …

Lisäys : Itse asiassa se on enemmän kyseisten solujen valinnasta, arviointi ei sinänsä ole ongelma.

Kommentit

  • Vaihto-Koti Vaihto-Enter ehkä? (näppäimistöllä, jolla on Koti)
  • ERITTÄIN hyödyllistä! Olen ’ ehdottanut tätä ominaisuutta WRI: lle useita vuosia.
  • @AndreasLauschke phew, iloinen ´ m ei ainoa. Ja näyttää siltä, että tämä lisäys valikkoon / pikakuvakkeisiin on niin vähäinen. Kenen WRI: ssä meidän pitäisi tehdä vikoja vahvistaaksemme ponnistelujasi?
  • Hyödytön. Forgeddaboudit. Mutta voit laittaa Rolf ’ s- tai Martin ’ s- tai Rojo ’ -ratkaisun init.m, laita se napin palettiin tai käytä näppäinkäännöstä. Minulla ei ole mitään hyötyä Caps Lock -näppäimestä, minusta se on kaikkien aikojen hyödyttöminä avain, joten laitan tämän Caps Lockiin. Ratkaisee kaksi ongelmaa kerralla ja muuttaa ne ratkaisuiksi. En halua ’ pitää Shift- ja Ctrl-näppäinten ylikuormitusta liikaa, koska minulla on muita avainkäännöksiä niille o / s-tasolla, mutta Caps Lock on ilmainen ja muuten hyödytön.
  • @AndreasLauschke Minusta tykkää Caps Lock kaksi yhdessä -korjaus. Ei enää tarpeetonta huutamista! Hmm, tuottava ilta.

Vastaa

Yksi mahdollisuus on muokata henkilökohtaista KeyEventTranslations.tr (testattu vain Windowsissa). Arvioi seuraava, käynnistä sitten Mathematica uudelleen ja sitten Ctrl + Vaihto + Koti valitsee kaikki solut lisäyskohdan yläpuolella.


9.0.1. käytä: 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"]; 

Kommentit

  • (… vetää syvään henkeä …) MAHTAVAA! Tämä on puhdasta kultaa, samoin kuin kelloja ja pilliä. Työnkuluni lähettää vilpittömimmät terveyteni ja menee kotiin aikaisin juhlimaan.
  • @YvesKlett Gern geschehen. Lisäsin itse asiassa SelectionEvaluate [SelectedNotebook []]; KernelExecuten lopussa, koska pidän yleensä siitä. Kyse on henkilökohtaisesta työskentelytavasta, jos joku haluaa tätä vai ei. Ehkä ihmiset WRI: ssä työskentelevät eri tavalla? Tai onko sinulla pienempiä muistikirjoja? Tai älä ’ käytä muistikirjoja oikeastaan testattavaksi (koska WWB on kummallinen? Kuka tietää. Ainakin Mathematican asioita on riittävän helppo muokata / parantaa.
  • hieman muokattu toimimaan oikein myös Linuxissa … Huomaa, että Control Shift UpKey on henkilökohtaisesti mielestäni helpompaa. Joten mitä käytän, voidaan käyttää kuten Import["http://www.mertig.com/shortcuts.m"]
  • Päivitetty 9.0.1: n kommentit. Käytä: Import["http://www.mertig.com/shortcuts.m"]
  • Erittäin, erittäin mukava. Annettua koodia voidaan (hyvin) hieman muokata luomaan pikakuvake, joka valitsee kaikki solut alla nykyisen solun, painamalla Ctrl + Vaihto + DownArrow. Lisää mymenuitems -määrityksen jälkeen vain seuraava rivi: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Vastaa

Työskentelin juuri jotain ja tässä sivuvaikutus. Ei mitään uutta, mutta annettu suljetussa muodossa palettipainikkeena:

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

Kohdistimen ei tarvitse olla solujen välillä, vaan solussa, joka on tarkoitus arvioida lopussa.

Kommentit

  • Paljon kiitoksia tästä massiivisesta ajansäästäjästä, jonka keksit! (Hehe, sain vihdoin tarpeeksi pisteitä kiittääkseni.) Kuten tiedät, muutin rutiini hieman päästäkseen eroon ” äänimerkki, ” ja lähetin alla olevan modin. En käytä ’ MMA: ta tarpeeksi usein muista joukko avainkomentoja, joten ’ on mukavaa, että meillä on hieno pieni paletti, jolla on ” Arvioi yllä ” -painike siinä t Voin sijoittaa kätevästi minne tahansa.
  • @BillN Ei hätää 🙂 Onnea ja toivon, että tulet tänne useammin 🙂 Ei vain korjata vastauksiani 🙂

vastaus

Tämä on @Kuba: n vastauksen muokkaus, joka arvioi jälleen kaikki yllä olevat solut ja myös valitun solun, mutta ilman piippausta (pieni tarkennus). Kiitos @Kuba päärutiinista. Kuten alkuperäinen, koodi luo dinky -paletin yhdellä ”Arvioi yllä” -painikkeella, joka voidaan sijoittaa mihin tahansa kätevä sijainti (kuten työpöydän yläosassa olevien muiden valikkokohteiden vieressä). Solu (mikä tahansa solu) on valittava, jotta ”Arvioi yllä” -painike toimii.

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

Koodimuutos valitsee arvioitavaksi vain syöttösolut, ”ohittaa” (tuottaa tyhjän tuloksen) kaikille muille solutyyleille. Kiitos @John Fultz komennosta, joka palauttaa solutyypit (kohdassa ”Kuinka saan valittujen solujen tyylin?”). Ilmeisesti ”äänimerkki” tapahtuisi, jos ei-syötettyjä soluja pyydettäisiin arvioimaan. Tämä näyttää toimivan hyvin Mathematica 11.0.1: n kanssa.

Olen Mathematicassa uusi, eikä tämä ketju ole ollut aktiivinen jonkin aikaa. Joten en ole varma, onko nyt jotain helppoa tapaa tehdäksesi tämän sisäänrakennettuna (ei löydy mitään) vai vaaditaanko tällaista mukautettua rutiinia.

Päivitys 3/10/18: Olen lisännyt Button -vaihtoehtomenetelmän -> ”Jonossa ”estääkseen aikakatkaisun, joka tapahtuu oletusarvoisella painikkeen arviointimenetelmällä” ennakoiva ”. ”Jonossa” -vaihtoehtoa käytetään arvioimaan päälinkin painikkeiden toimintoja, jotka eivät koskaan katkea.

Kommentit

  • +1, jotka sinun olisi pitänyt kertoa minä;) En ollut ’ tiennyt, koska en käytä sitä päivittäin;)
  • Sry @Kuba 🙂 I ’ m niin uusi täällä, minulla ’ ei ole vielä tarpeeksi pisteitä edes kommentoidaksesi viestiäsi (hehe). Suuri Kiitos on tulossa, kun teen. Tämä on valtava ” hässäkkäkerroin ” vähennysventtiili.
  • Kiitos päivittää. En ole tietoinen muutoksista käyttöliittymässä tämän helpottamiseksi, mutta olen erittäin tyytyväinen Rolf ’ -ratkaisuun.
  • @Yves Klett Kiitos kun annoit minulle tiedä, että mukautettua toimintoa tarvitaan edelleen.
  • @BillN tervetuloa juhliin: D

Vastaa

Voit arvioida ennen nykyistä solua olevat syöttösolut suorittamalla tämän

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

kommentit

  • Hurraa! Ainoa asia, joka nyt puuttuu, on kätevä pikakuvake (mutta myös tämä on jo katettu @RolfMertig ´ -vastauksella).
  • pikakuvake tai painike paletissa. ’ laitan tämän todennäköisesti paletin painikkeeseen yhdessä muiden hyödyllisten painikkeiden kanssa.
  • En ’ Luulen, että tämä on niin helppo laittaa painikkeeseen, koska tarvitset EvaluationCell []
  • @RolfMertig siinä tapauksessa, Experimental PreviousCell [] `tekee enemmän järki

vastaus

Minulla ei ole aavistustakaan, miten tämä tehdään suhteessa kohdistimeen yleensä, mutta käyttäen CellObject voit tehdä paljon, jos olet solussa.

Voit tehdä melko vähän SelectionMove -toiminto. Seuraavassa valitaan kaikki arviointikirjan solut. Huomaa, että aivan omituisella tavalla All määrittelee nykyisen muistikirjan, After ja Previous antaa sinulle vastaava muistikirjaluettelon elementti, joka saadaan arvioimalla Notebooks[].

SelectionMove[EvaluationNotebook[], All, Notebook] 

Valintaa voidaan siirtää CellGroup. Tämä painike valitsee asteittain painikkeen yläpuolella olevat CellGroup:

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

-funktiossa on muutama esimerkki ja se osoittaa, että toimintoa voidaan käyttää valitsemaan solun sisäinen sisältö sekä kokonaiset solut.

Luulen, että” näin ” Pyydä Mathematicaa antamaan minulle luettelo CellObject ennen SelectedCells: n ensimmäistä, mutta en ole vielä siellä.

Kommentit

  • Most@Experimental CellRange [Ensinnäkin, EvaluationCell []] . Or with only documented functions, TakeWhile [Solut [], # =! = EvaluationCell [] &] == Eniten @ kokeellisia CellRange[First, EvaluationCell[]]
  • Anteeksi, ajattelin, että se oli ennen kuin hte arvioi solua, käytä SelectedCell[] sen sijaan valitulle solulle
  • Että ’ S melko siistiä, minun täytyy ’ leikkiä CellRan kanssa nge. En voi ’ uskoa, että kokeellinen konteksti näkyy nyt komentojen täydennysvalikossa.
  • @Rojo ensimmäinen kommenttisi söi kontekstitaustan ja loput eivät todellakaan ole toimi V9: n kanssa täällä … haluaisitko tarkentaa?
  • Kyllä, anteeksi, Most@Experimental`CellRange[First, EvaluationCell[]]. Tai vain dokumentoitujen toimintojen kanssa, TakeWhile[Cells[], # =!= EvaluationCell[] &]. Tämän pitäisi antaa luettelo CellObjects ennen arviointia.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *