Van-e parancs / menübejegyzés / billentyűparancs az összes cella kiértékeléséhez az aktuális kurzorhelyzet felett? Az az érzésem, hogy hiányzik valami alapvető dolog itt …
Kiegészítés : Valójában ez inkább a cellák kiválasztásáról szól, az értékelés nem önmagában a probléma.
Megjegyzések
- Shift-Home Shift-Enter talán? (olyan billentyűzeten, amelyen van Home)
- Rendkívül hasznos!
évek óta javaslom ezt a funkciót a WRI-nek.
Válasz
Az egyik lehetőség a személyes (csak Windows rendszeren tesztelve). Értékelje a következőket, majd indítsa újra a Mathematica alkalmazást, majd a Ctrl + Shift + Home összes cellát kiválasztja a beszúrási pont felett.
A 9.0.1. használat: 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"];
Megjegyzések
- (… mély lélegzetet vesz …) Félelmetes! Ez tiszta arany, és harangokkal és sípokkal is. Munkafolyamatom őszinte üdvözletet küld, és korán megy haza ünnepelni.
- @YvesKlett Gern geschehen. Valójában hozzáadtam a SelectionEvaluate [SelectedNotebook []]; a KernelExecute végén, mivel ezt általában szeretem csinálni. Személyes munkastílus kérdése, gondolom, ha valaki ezt akarja vagy sem. Lehet, hogy a WRI-n dolgozók másképp dolgoznak? Vagy vannak kisebb noteszei? Vagy ne használjon notebookokat valóban tesztelésre (lévén, hogy a WWB megőrzi mindegyiket?). Ki tudja. Legalább elég könnyen módosítható / javítható a Mathematica dolgaiban.
- kissé módosítva, hogy a Linux alatt is megfelelően működjenek … Figyelje meg, hogy a Control Shift UpKey személy szerint nekem könnyebb. Tehát amit használok, úgy használhatom, mint
Import["http://www.mertig.com/shortcuts.m"]
- Frissítettem a 9.0.1-es megjegyzéseket. Használja:
Import["http://www.mertig.com/shortcuts.m"]
- Nagyon, nagyon kedves. A megadott kódot (nagyon) kissé módosíthatjuk, és létrehozhatunk egy parancsikont, amely az összes cellát kiválasztja alatt az aktuális cella segítségével a Ctrl + Shift + DownArrow billentyűkombinációval. A
mymenuitems
meghatározása után csak adja hozzá a következő sort:mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];
.
Válasz
Éppen dolgoztam valamin, és itt mellékhatás volt. Semmi új, de zárt formában adható meg paletta gombként:
CreatePalette[ Button["Evaluate above", With[{NB = InputNotebook[]}, Do[ SelectionMove[Experimental`FromCellIndex[NB, i], All, Cell]; SelectionEvaluate[NB]; , {i, 1, Experimental`ToCellIndex @ SelectedCells[NB][[1]]}] ]]]
A kurzornak nem a cellák között, hanem a végén értékelendő cellában kell lennie.
Megjegyzések
- Köszönöm szépen ezt a hatalmas időmegtakarítót, amellyel előállt! (Hehe, végül elég pontot kaptam, hogy megköszönjem). Mint tudják, kissé módosítottam a rutinját, hogy megszabaduljak a ” hangjelzés, ” és az alábbi mod közzétételét. Nem ‘ nem használom az MMA-t elég gyakran ahhoz, hogy ne felejtsen el egy csomó kulcsparancsot, ezért ‘ jó, ha van egy remek kis palettánk az ” ” gomb rajta t kényelmesen elhelyezhetek bárhol.
- @BillN Nem probléma 🙂 Sok szerencsét és remélem, hogy gyakrabban fogsz idejönni 🙂 Nem csak a válaszaim kijavítására 🙂
Válasz
Ez a @Kuba válaszának módosítása, amely ismételten értékeli az összes fenti cellát és tartalmazza a kiválasztott cellát, de a “csipogás” nélkül (kisebb finomítás). Köszönöm @Kuba a fő rutint. Csakúgy, mint az eredetinél, a kód is létrehoz egy dinky palettát egyetlen “Értékelés fent” gombbal, amelyet ezután bármelyikre elhelyezhet kényelmes helyen (például a működő notebook tetején lévő többi menüpont mellett). Az “Értékelés fent” gomb működéséhez egy cellát (bármely cellát) ki kell választani.
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"]]
A kódváltozás csak a bemeneti cellákat választja ki értékelésre, minden más cellastílushoz “átugorja” (Null eredményt generál). Köszönet @John Fultz-nak a cellastílusokat visszaadó parancsért (a “Hogyan tudom megszerezni a kiválasztott cellák stílusát?” Részben). Nyilvánvalóan “sípolás” lépne fel, ha a nem bemenő cellák értékelését kérnék. Úgy tűnik, hogy ez jól működik a Mathematica 11.0.1 verzióval.
Új vagyok a Mathematica számára, és ez a szál egy ideje nem volt aktív. Tehát nem vagyok biztos benne, hogy van-e most valami egyszerű módszer ennek beépítéséhez (nem találok semmit), vagy szükség van-e még ilyen egyedi rutinra.
Frissítés 18/10/10: Hozzáadtam a Gomb opció metódust -> “Sorban “az alapértelmezett” Preemptive “gombértékelési módszerrel bekövetkező időtúllépés megakadályozása érdekében. A “Sorban” opció a fő link gombfunkcióinak kiértékelésére szolgál, amelyek soha nem túllépnek.
Megjegyzések
- +1, amelyeket el kellett volna mondania én;) Nem voltam ‘ tudatában, mivel nem napi szinten használom;)
- Sry @Kuba 🙂 I ‘ m olyan új itt, nincs ‘ még elég pontom ahhoz, hogy még hozzászólásodhoz is hozzászóljak (hehe). Egy nagy köszönet jön, ha megteszem. Ez egy hatalmas ” szóváltási tényező ” csökkentő.
- Köszönjük a frissítés. Nincs tudomásom a frontend változásairól, amelyek ezt megkönnyítenék, de nagyon örülök Rolf ‘ megoldásának.
- @Yves Klett Köszönöm, hogy megengedte tudd, hogy még mindig szükség van egyedi funkcióra.
- @BillN üdvözlöm a partiban: D
Válasz
Az aktuális cella előtti bemeneti cellákat kiértékelheti a következő futtatásával:
Function[cobj, SelectionMove[cobj, Cell, All]; SelectionEvaluate[InputNotebook[]];]~ Scan~ TakeWhile[Cells[CellStyle -> "Input"], # =!= EvaluationCell[] &]; SelectionMove[EvaluationCell[], After, Cell];
Megjegyzések
- Hurrá! Csak egy kényelmes parancsikon hiányzik (de ezt már a @RolfMertig ´ válasza is lefedi).
- parancsikon vagy gomb egy palettán. Valószínűleg
ezt egy palettán lévő gombra teszem, más hasznos gombokkal együtt.
Experimental
PreviousCell [] `többet hoz érzék Válasz
Fogalmam sincs, hogyan lehet ezt a kurzorral általában véve, de a CellObject
sokat tehet, ha egy cellában tartózkodik.
Nagyon sok mindent megtehet a SelectionMove
függvény. A következőkben kiválasztjuk az összes cellát az értékelő füzetben. Ne feledje, hogy furcsa módon az All
megadja az aktuális jegyzetfüzetet, After
és Previous
megadja a notebookok listájának megfelelő eleme a Notebooks[]
kiértékelésével.
SelectionMove[EvaluationNotebook[], All, Notebook]
A kijelölés a következő szerint mozgatható: CellGroup
. Ez a gomb fokozatosan kiválasztja a gomb feletti CellGroup
-t:
Button["Select previous cell group", SelectionMove[EvaluationNotebook[], Previous, CellGroup]]
A függvény jó néhány példát mutat be, és megmutatja, hogy a funkcióval kiválasztható egy cella, valamint az egész cella belső tartalma.
Úgy gondolom, hogy erre módom van kérje a Mathematicát, hogy adja meg a CellObject
listát a SelectedCells
első elõtt, de még nem vagyok ott.
Megjegyzések
-
Most@Experimental
CellRange [Először, EvaluationCell []]. Or with only documented functions,
TakeWhile [Cells [], # =! = EvaluationCell [] &] == A legtöbb @ kísérletiCellRange[First, EvaluationCell[]]
- Sajnálom, azt hittem, hogy a cte kiértékelése előtt használd a
SelectedCell[]
-t a kiválasztott cellához. - Ez ‘ s nagyon klassz, ‘ el kell játszanom a CellRa-val nge. ‘ nem hiszem el, hogy a Kísérleti kontextus most megjelenik a parancs befejezése menüben.
- @Rojo az első megjegyzésed felemésztett egy kontextus háttért, a többi pedig nem igazán dolgozzon itt a V9-en … érdekelne részletesen?
- Igen, sajnálom,
Most@Experimental`CellRange[First, EvaluationCell[]]
. Vagy csak dokumentált függvényekkel,TakeWhile[Cells[], # =!= EvaluationCell[] &]
. Ennek meg kell adnia azCellObjects
listáját az értékelés előtt.