¿Existe un atajo para seleccionar todas las celdas sobre la posición actual del cursor?

¿Existe un comando / entrada de menú / atajo de teclado para evaluar todas las celdas arriba / arriba hasta la posición actual del cursor? Tengo la sensación de que me falta algo elemental aquí …

Anexo : de hecho, se trata más de la selección de esas celdas, la evaluación no es el problema como tal.

Comentarios

  • Shift-Home Shift-Enter ¿tal vez? (en un teclado que tiene Inicio)
  • ¡EXTREMADAMENTE útil! ‘ he estado sugiriendo esta función al WRI durante varios años.
  • @AndreasLauschke uf, me alegro ´ m No el único. Y parece un esfuerzo menor agregar esto al menú / atajos. ¿A quién en WRI deberíamos molestar para reforzar su esfuerzo?
  • Inútil. Forgeddaboudit. Pero podrías poner la solución de Rolf ‘ s o Martin ‘ s o Rojo ‘ en un init.m, para ponerlo en un botón en una paleta, o usar el keytranslate. No tengo uso para la tecla Bloq Mayús, la encuentro la tecla más inútil que haya existido, así que considero poner esto en Bloq Mayús. Resuelve dos problemas a la vez y los convierte en soluciones. No ‘ no me gusta sobrecargar demasiado las teclas Shift y Ctrl, ya que tengo otras traducciones de teclas para ellas en un nivel o / s, pero el bloqueo de mayúsculas es gratis y, por lo demás, es inútil. li>
  • @AndreasLauschke Me me gusta la solución dos en uno de Bloq Mayús. ¡No más HORAS innecesarias también! Mmm, una noche productiva.

Responder

Una posibilidad es modificar su (solo probado en Windows). Evalúe lo siguiente, luego reinicie Mathematica, luego Ctrl + Shift + Inicio seleccionará todas las celdas arriba del punto de inserción.


Para 9.0.1. use: 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"]; 

Comentarios

  • (… respirando hondo …) ¡IMPRESIONANTE! Esto es oro puro, y también con campanas y silbidos. Mi flujo de trabajo envía saludos más sinceros y se va temprano a casa para celebrar.
  • @YvesKlett Gern geschehen. De hecho, agregué SelectionEvaluate [SelectedNotebook []]; al final de KernelExecute, ya que normalmente me gusta hacer eso. Es una cuestión de estilo de trabajo personal, supongo que si uno quiere esto o no. ¿Quizás la gente de WRI trabaja de manera diferente? ¿O tienes cuadernos más pequeños? O no ‘ t use los cuadernos en realidad para las pruebas (¿ser WWB es un fanático de todos?). Quién sabe. Al menos es suficientemente fácil modificar / mejorar cosas en Mathematica.
  • ligeramente modificado para funcionar también bajo Linux correctamente … Note que personalmente encuentro Control Shift UpKey más fácil. Entonces, lo que uso se puede usar como Import["http://www.mertig.com/shortcuts.m"]
  • Se actualizaron los comentarios para 9.0.1. Utilice: Import["http://www.mertig.com/shortcuts.m"]
  • Muy, muy agradable. El código dado se puede modificar (muy) ligeramente para crear un atajo que seleccione todas las celdas debajo de la celda actual, usando Ctrl + Shift + Flecha abajo. Después de la definición de mymenuitems, simplemente agregue la siguiente línea: mymenuitems=StringReplace[mymenuitems, {"Home" -> "Down","Next" -> "Previous", "Previous" -> "Next", "Before" -> "After"}];.

Respuesta

Estaba trabajando en algo y aquí «un efecto secundario. Nada nuevo pero dado en forma cerrada como botón de paleta:

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

El cursor no debe estar entre celdas, sino en la celda que se debe evaluar al final.

Comentarios

  • ¡Muchas gracias por este enorme ahorro de tiempo que se te ocurrió! (Jeje, finalmente obtuve suficientes puntos para agradecerte). Como sabes, modifiqué ligeramente tu rutina para deshacerme del » beep, » y publiqué el mod a continuación. No ‘ no uso MMA con suficiente frecuencia para recuerde un montón de comandos de teclado, por lo que ‘ es bueno tener una paleta pequeña e ingeniosa con la » Evaluar arriba » botón que Puedo colocarlo cómodamente en cualquier lugar.
  • @BillN No hay problema 🙂 Buena suerte y espero que vengas aquí más a menudo 🙂 No solo para arreglar mis respuestas 🙂

Respuesta

Esta es una modificación de la respuesta de @Kuba, nuevamente evaluando todas las celdas de arriba e incluyendo la celda seleccionada, pero sin el «bip» (un refinamiento menor). Gracias @Kuba por la rutina principal. Al igual que con el original, el código genera una pequeña paleta con un solo botón «Evaluar arriba», que luego se puede colocar en cualquier ubicación conveniente (como junto a los otros elementos del menú en la parte superior de su cuaderno de trabajo). Se debe seleccionar una celda (cualquier celda) para que funcione el botón «Evaluar arriba».

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

El cambio de código selecciona solo las celdas de entrada para su evaluación, «saltando» (generando un resultado nulo) para todos los demás estilos de celda. Gracias @John Fultz por el comando que devuelve estilos de celda (en «¿Cómo puedo obtener el estilo de las celdas seleccionadas?»). Evidentemente, se produciría un «bip» si se solicitara la evaluación de las celdas que no son de entrada. Esto parece estar funcionando bien con Mathematica 11.0.1.

Soy nuevo en Mathematica, y este hilo no ha estado activo por un tiempo. Así que no estoy seguro si ahora existe alguna manera fácil para hacer esto integrado (no puedo encontrar nada), o si todavía se requiere una rutina personalizada como esta.

Actualización 10/03/18: He agregado la opción de botón Método -> «En cola «para evitar el tiempo de espera que se produce con el método de evaluación del botón predeterminado» Preventivo «. La opción «En cola» se utiliza para evaluar las funciones de los botones en el enlace principal, que nunca se agota.

Comentarios

  • +1 que debería haber dicho yo;) No estaba ‘ t consciente ya que no lo uso a diario;)
  • Sry @Kuba 🙂 I ‘ Soy tan nuevo aquí, no ‘ todavía no tengo suficientes puntos para comentar en tu publicación (jeje). Un gran agradecimiento vendrá una vez que lo haga. Este es un enorme » factor de molestia » reductor.
  • Gracias por el actualizar. No tengo conocimiento de ningún cambio en la interfaz para facilitar eso, pero estoy muy contento con la solución de Rolf ‘.
  • @Yves Klett Gracias por dejarme sepa que todavía se requiere una función personalizada.
  • @BillN bienvenido a la fiesta: D

Responder

Puede evaluar las celdas de entrada antes de la celda actual ejecutando este

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

Comentarios

  • ¡Hurra! Lo único que falta ahora es un atajo conveniente (pero esto también está cubierto por la respuesta de @RolfMertig ´).
  • atajo o botón en una paleta. Yo ‘ probablemente pondré esto en un botón de una paleta, junto con otros botones útiles.
  • No ‘ t creo que esto es tan fácil de poner en un botón, ya que necesita EvaluationCell []
  • @RolfMertig en ese caso, Experimental PreviousCell [] `hace más sentido

Responder

No tengo idea de cómo hacer esto con relación al cursor en general, pero usando CellObject puedes hacer mucho si estás en una celda.

Hay muchas cosas que puedes hacer con el SelectionMove función. A continuación, se seleccionarán todas las celdas del cuaderno de evaluación. Tenga en cuenta que, de manera bastante extraña, All está especificando el cuaderno actual, After y Previous le darán el elemento respectivo de la lista de cuadernos proporcionada al evaluar Notebooks[].

SelectionMove[EvaluationNotebook[], All, Notebook] 

La selección se puede mover según CellGroup. Este botón seleccionará progresivamente cada CellGroup encima del botón:

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

La documentación para SelectionMove La función proporciona bastantes ejemplos y muestra que la función se puede usar para seleccionar el contenido interno de una celda, así como celdas completas.

Creo que hay una forma en que puedo conseguir que Mathematica me dé la lista de CellObject antes del primero de SelectedCells, pero «todavía no he llegado a ese punto».

Comentarios

  • Most@Experimental CellRange [Primero, EvaluationCell []] . Or with only documented functions, TakeWhile [Cells [], # =! = EvaluationCell [] &] == Most @ Experimental CellRange[First, EvaluationCell[]]
  • Lo siento, pensé que era antes de evaluar la celda, use SelectedCell[] en su lugar para la celda seleccionada
  • Eso ‘ s muy bueno, ‘ tendré que jugar con CellRa nge. No puedo ‘ creer que el contexto experimental se muestra en el menú de finalización de comandos ahora.
  • @Rojo, tu primer comentario se comió una comilla invertida de contexto y el resto realmente no trabajar en V9 aquí … ¿le importaría explicarlo?
  • Sí, lo siento, Most@Experimental`CellRange[First, EvaluationCell[]]. O solo con funciones documentadas, TakeWhile[Cells[], # =!= EvaluationCell[] &]. Eso debería dar una lista de CellObjects antes de la de evaluación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *