Existe-t-il un raccourci pour sélectionner toutes les cellules au-dessus de la position actuelle du curseur?

Existe-t-il une commande / entrée de menu / raccourci clavier pour évaluer toutes les cellules au-dessus / jusquà la position actuelle du curseur? Jai le sentiment quil me manque quelque chose délémentaire ici …

Addendum : En fait, il est plus sur la sélection de ces cellules, lévaluation nest pas le problème en tant que tel.

Commentaires

  • Shift-Home Shift-Enter peut-être? (sur un clavier qui a Home)
  • EXTRÊMEMENT utile! Je ‘ suggère cette fonctionnalité à WRI depuis plusieurs années.
  • @AndreasLauschke ouf, heureux que je ´ m pas le seul. Et cela semble un effort mineur pour ajouter cela au menu / aux raccourcis. Qui au WRI devrions-nous bogue pour renforcer votre effort?
  • Inutile. Forgeddaboudit. Mais vous pouvez mettre la solution de Rolf ‘ s ou de Martin ‘ s ou de Rojo ‘ dans un init.m, pour le placer sur un bouton dans une palette, ou utiliser le keytranslate. Je nai pas besoin de la touche de verrouillage des majuscules, je la trouve la clé la plus inutile jamais, donc je pense mettre cela sur le verrouillage des majuscules. Résout deux problèmes à la fois et les transforme en solutions. ‘ t naime pas trop surcharger les touches Maj et Ctrl, car jai dautres traductions de touches pour elles au niveau o / s, mais Caps Lock est gratuit et autrement inutile.
  • @AndreasLauschke Je jaime le correctif deux-en-un du verrouillage des majuscules. Fini les SHOUTING inutiles! Hum, une soirée productive.

Réponse

Une possibilité est de modifier votre (testé uniquement sous Windows). Évaluez ce qui suit, puis redémarrez Mathematica, puis Ctrl + Maj + Accueil sélectionnera toutes les cellules au-dessus du point dinsertion.


Pour la version 9.0.1. utilisez: 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"]; 

Commentaires

  • (… inspirant profondément …) IMPRESSIONNANT! Cest de lor pur, ainsi que des cloches et des sifflets. Mon flux de travail envoie mes plus sincères salutations et rentre chez moi tôt pour fêter ça.
  • @YvesKlett Gern geschehen. Jai en fait ajouté SelectionEvaluate [SelectedNotebook []]; à la fin de KernelExecute, puisque jaime généralement faire ça. Cest une question de style de travail personnel, je suppose que lon veut ou non. Peut-être que les gens de WRI travaillent différemment? Ou avez-vous des cahiers plus petits? Ou ne ‘ pas utiliser les notebooks vraiment pour les tests (étant des monstres WWB tous?). Qui sait. Au moins, il est suffisamment facile de modifier / améliorer les choses dans Mathematica.
  • légèrement modifié pour fonctionner aussi correctement sous Linux … Notez que personnellement, je trouve Control Shift UpKey plus facile. Donc, ce que jutilise peut être utilisé comme Import["http://www.mertig.com/shortcuts.m"]
  • Mise à jour des commentaires pour la version 9.0.1. Utilisez: Import["http://www.mertig.com/shortcuts.m"]
  • Très, très bien. Le code donné peut être (très) légèrement modifié pour créer un raccourci qui sélectionne toutes les cellules sous la cellule courante, en utilisant Ctrl + Maj + Flèche vers le bas. Après la définition de mymenuitems, ajoutez simplement la ligne suivante: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Réponse

Je travaillais juste sur quelque chose et voici « un effet secondaire. Rien de nouveau mais donné sous forme fermée sous forme de bouton de palette:

Le curseur ne doit pas être entre les cellules mais dans la cellule qui est censée être évaluée à la fin.

Commentaires

  • Merci beaucoup pour cet énorme gain de temps que vous avez trouvé! (Héhé, jai finalement eu assez de points pour vous remercier.) Comme vous le savez, jai légèrement modifié votre routine afin de vous débarrasser de la  » bip,  » et posté le mod ci-dessous. Je nutilise ‘ que MMA assez souvent pour souvenez-vous dun tas de raccourcis clavier, donc il est ‘ agréable davoir une petite palette astucieuse avec celle  » Évaluer ci-dessus  » bouton dessus tha t Je peux facilement placer nimporte où.
  • @BillN Pas de problème 🙂 Bonne chance et jespère que vous viendrez ici plus souvent 🙂 Pas seulement pour corriger mes réponses 🙂

Réponse

Ceci est une modification de la réponse de @Kuba, évaluant à nouveau toutes les cellules ci-dessus et incluant la cellule sélectionnée, mais sans le « bip » (un raffinement mineur). Merci @Kuba pour la routine principale. Comme pour loriginal, le code génère un dinky palette avec un seul bouton « Evaluate Above », qui peut ensuite être placé sur nimporte quel emplacement pratique (par exemple à côté des autres éléments de menu en haut de votre cahier de travail). Une cellule (nimporte quelle cellule) doit être sélectionnée pour que le bouton «Évaluer au-dessus» fonctionne.

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

Le changement de code sélectionne uniquement les cellules dentrée pour lévaluation, « sautant » (générant un résultat nul) pour tous les autres styles de cellule. Merci @John Fultz pour la commande qui renvoie les styles de cellule (sous « Comment puis-je obtenir le style des cellules sélectionnées? »). De toute évidence, un « bip » se produirait si des cellules sans entrée devaient être évaluées. Cela semble fonctionner correctement avec Mathematica 11.0.1.

Je suis nouveau dans Mathematica, et ce fil n’est pas actif depuis un certain temps. Je ne sais donc pas s’il existe maintenant un moyen simple pour faire cela intégré (impossible de trouver quoi que ce soit), ou si une routine personnalisée comme celle-ci est toujours nécessaire.

Mise à jour 3/10/18: Jai ajouté loption Button Méthode -> « En file dattente « afin déviter le délai dexpiration qui se produit avec la méthode dévaluation Button par défaut » Preemptive « . Loption « En file dattente » est utilisée pour évaluer les fonctions des boutons sur le lien principal, qui nexpirent jamais.

Commentaires

  • +1 que vous auriez dû dire moi;) Je nétais ‘ pas au courant car je ne lutilise pas quotidiennement;)
  • Sry @Kuba 🙂 Je ‘ m si nouveau ici, je nai ‘ pas encore assez de points pour même commenter votre message (hehe). Un grand merci vient une fois que je le fais. Ceci est un énorme  » réducteur « .
  • Merci pour le mettre à jour. Je ne suis au courant daucune modification du frontend pour faciliter cela, mais je suis très satisfait de la solution de Rolf ‘.
  • @Yves Klett Merci de mavoir permis sachez quune fonction personnalisée est toujours requise.
  • @BillN bienvenue dans la fête: D

Réponse

Vous pouvez évaluer les cellules dentrée avant la cellule actuelle en exécutant ceci

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

Commentaires

  • Hourra! La seule chose qui manque maintenant est un raccourci pratique (mais cela est déjà couvert par la réponse de @RolfMertig ´).
  • raccourci ou bouton dans une palette. Je ‘ Je mettrai probablement ceci sur un bouton sur une palette, avec dautres boutons utiles.
  • Je ne ‘ Je pense que cest si facile à mettre dans un bouton, puisque vous avez besoin dEvaluationCell []
  • @RolfMertig dans ce cas, Experimental PreviousCell [] `en fait plus sens

Réponse

Je ne sais pas comment faire cela par rapport au curseur en général, mais en utilisant CellObject vous pouvez faire beaucoup si vous « êtes dans une cellule.

Vous pouvez faire pas mal de choses avec le SelectionMove. Ce qui suit sélectionnera toutes les cellules du cahier dévaluation. Notez que étrangement All spécifie le notebook actuel, After et Previous vous donneront lélément respectif de la liste des blocs-notes fournie en évaluant Notebooks[].

SelectionMove[EvaluationNotebook[], All, Notebook] 

La sélection peut être déplacée selon CellGroup. Ce bouton sélectionnera progressivement chaque CellGroup au-dessus du bouton:

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

La documentation du fournit quelques exemples et montre que la fonction peut être utilisée pour sélectionner le contenu interne dune cellule ainsi que des cellules entières.

Je pense quil y a » une façon de le faire demandez à Mathematica de me donner la liste des CellObject avant le premier des SelectedCells mais je « ne suis pas encore tout à fait là.

Commentaires

  • Most@Experimental CellRange [First, EvaluationCell []] . Or with only documented functions, TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ Experimental CellRange[First, EvaluationCell[]]
  • Désolé, je pensais que cétait avant dévaluer la cellule, utilisez plutôt SelectedCell[] pour la cellule sélectionnée
  • Que ‘ Cest plutôt cool, je ‘ vais devoir jouer avec CellRa nge. Je ne peux ‘ pas croire que le contexte expérimental apparaît dans le menu de fin de commande maintenant.
  • @Rojo votre premier commentaire a mangé un backtick de contexte et le reste ne le fait pas vraiment travaillez sur V9 ici … voudriez-vous élaborer?
  • Oui, désolé, Most@Experimental`CellRange[First, EvaluationCell[]]. Ou avec uniquement des fonctions documentées, TakeWhile[Cells[], # =!= EvaluationCell[] &]. Cela devrait donner une liste des CellObjects avant lévaluation.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *