{"id":72872,"date":"2021-05-17T12:54:34","date_gmt":"2021-05-17T16:54:34","guid":{"rendered":"https:\/\/www.inmotionhosting.com\/support\/?p=72872"},"modified":"2021-11-23T11:41:13","modified_gmt":"2021-11-23T16:41:13","slug":"emacs-keyboard-macros","status":"publish","type":"post","link":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/","title":{"rendered":"Emacs Keyboard Macros To Speed Up Your Workflow"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png\" alt=\"Emacs keyboard macros for beginners\" class=\"wp-image-72873\" srcset=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png 1024w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-300x158.png 300w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-768x403.png 768w, https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png 1200w\" sizes=\"auto, (min-width: 1360px) 876px, (min-width: 960px) calc(61.58vw + 51px), calc(100vw - 80px)\" \/><\/figure>\n\n\n\n<p>\nThe ideal Emacs user is always looking for ways to speed up their work, or, as the saying goes, \u201cWork smarter rather than harder.\u201d  Defining Emacs keyboard Macros will not only help you save time in your text editing but can also help you get a handle on some programming fundamentals.\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"#macros-save-time\">Emacs Keyboard Macros Save Time<\/a><ul><li><a href=\"#Some-Use-Cases-For-Macros\">Cases For Macros<\/a><\/li><li><a href=\"#Practice-Some-Programming-Fundamentals\">Practice Programming Fundamentals<\/a><\/li><\/ul><\/li><li><a href=\"#using-macros\">How to Start Using Macros<\/a><ul><li><a href=\"#emacs-keyboard-macros\">Defining a Macro<\/a><\/li><li><a href=\"#running-a-macro\">Running a Macro<\/a><\/li><\/ul><\/li><li><a href=\"#additional-macro-options\">Additional Macro Options<\/a><ul><li><a href=\"#The-Keyboard-Macro-Ring\">The Keyboard Macro Ring<\/a><\/li><li><a href=\"#The-Universal-Argument-Command\">The Universal Argument Command <\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<p> You can use Emacs locally but also install a terminal version for your <a href=\"https:\/\/www.inmotionhosting.com\/vps-hosting\">VPS hosting<\/a>.  If you are unsure about different hosting accounts, learn about the difference between <a href=\"https:\/\/www.inmotionhosting.com\/vps-vs-dedicated-server\">VPS hosting vs dedicated server<\/a>.  <\/p>\n\n\n\n<p>Emacs <a href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-tramp\/\">Tramp<\/a> also lets you access your servers from within Emacs locally. The latter is considered more beneficial since you can carry your Emacs keyboard macros to any server you visit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"macros-save-time\">Emacs Keyboard Macros Save Time<\/h2>\n\n\n\n<p class=\"alert alert-info\">Be sure to check out the <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Keyboard-Macros.html\">official Emacs macro documentation<\/a>.<\/p>\n\n\n\n<p>\nRepeating your work can be a tedious and laborious process, particularly when you work with a myriad of different text files that can often be formatted in different ways.  Emacs keyboard macros help you save time by giving you the ability to easily replicate your commands as many times as you need to get a job done.\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Some-Use-Cases-For-Macros\">Some Use Cases For Macros<\/h3>\n\n\n\n<p>\nA keyboard macro is a step below a function.  This means if you have a small issue that would not warrant the writing of a whole function, then the macro is the best choice.  Writing a function is better suited to a process that is more general and repeatable across a wider array of circumstances.  For something specific (and quick), needed only when you need it and never again, a macro fits nicely.  (However, if you have a particularly helpful macro that you will need to use again, you can save it and bind to a key.)\n<\/p>\n\n\n\n<p>\nJust in case you\u2019re wondering whether or not a keyboard macro is the best way to complete a certain job, here are a few idea use cases in which macro would work great:\n<\/p>\n\n\n\n<ul class=\"org-ul wp-block-list\"><li>You want to delete a repeated sequence of text objects in a file but a normal search and replace is not possible.<\/li><li>You have a specific set of commands that you must complete in a file, and you would like to execute them repeatedly until instances are covered.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Practice-Some-Programming-Fundamentals\">Practice Some Programming Fundamentals<\/h3>\n\n\n\n<p> Practicing macro definitions can also help solidify some programming concepts.  Defining a macro is basically a quick way to record instructions that the Emacs Lisp interpreter can understand.  In essence, this is the one of the ways that you define functions in the Emacs Lisp programming language.  The practical applications of macros can help you see first hand how to give direct instructions to Emacs in the language that it understands.  This will help you get a jump start when you eventually proceed onto writing your own custom function definitions. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"using-macros\">How to Start Using Macros<\/h2>\n\n\n\n<p>For every macro, there are two stages.  You must first define the macro and then run the macro as many times as you need it. Both of these stages are detailed below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"emacs-keyboard-macros\">Defining a Macro<\/h3>\n\n\n\n<p>\nIn order to start recording Emacs keyboard macros you only have to press the <code>&lt;f3&gt;<\/code> key on your keyboard.  The next series of keyboard input commands you use will be recorded in memory.  When you have finished the repeatable sequence of keys, press the <code>&lt;f4&gt;<\/code> key.\n<\/p>\n\n\n\n<p>\nIn case you have re-mapped the <code>&lt;f3&gt;<\/code> <code>&lt;f4&gt;<\/code> keys to some other function, these are the default macro functions that are being given to Emacs:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted example\">&lt;f3&gt; runs the command kmacro-start-macro-or-insert-counter (found in\nglobal-map), which is an interactive compiled Lisp function.\n\n&lt;f4&gt; runs the command kmacro-end-or-call-macro (found in global-map),\nwhich is an interactive compiled Lisp function.\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"running-a-macro\">Running a Macro<\/h3>\n\n\n\n<p>\nIn order to run your macro, you can press the <code>&lt;f4&gt;<\/code> key again and repeat that entry until you have completed all the work that the macro is able to do.  This is the easiest way to run the macro you previously recorded with <code>&lt;f3&gt;<\/code>.  Below, you\u2019ll see a few different ways for interacting with your macros.  But, for the most basic usage, <code>&lt;f3&gt;<\/code> and <code>&lt;f4&gt;<\/code> has got you covered.\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"additional-macro-options\">Additional Macro Options<\/h2>\n\n\n\n<p>\nBelow you will see a few different ways for interacting with one macro or different macros saved in a ring.\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"The-Keyboard-Macro-Ring\">The Keyboard Macro Ring<\/h3>\n\n\n\n<p>\nIf you have to save multiple macros for use in different documents, you can save a current macro to the \u201cmacro ring.\u201d  The macro ring is just what it sounds like: a ring that holds multiple values and lets you rotate through its contents.\n<\/p>\n\n\n\n<p>\nAll keyboard macro commands begin with the prefix <code>C-x C-k<\/code>.  This makes it easier to remember the various iterations and their key bindings.  <code>C-x C-k C-k<\/code>  executes the current macro at the head of the ring.  <code>C-x C-k C-n<\/code> cycles to the next macro in the ring, and <code>C-x C-k C-p<\/code> goes to the next macro in the ring.  Notice, after the <code>C-x C-k<\/code> prefix, you have <code>k<\/code> (the current macro) <code>n<\/code> (the <i>next<\/i> macro) and <code>p<\/code> (the <i>previous<\/i> macro).  You\u2019ll find that within many Emacs functions and modes, various commands for <i>next<\/i> and <i>previous<\/i> will be mapped to <code>n<\/code> and <code>p<\/code> keys.  Unless you map different commands to these keys, you\u2019ll find the rule is fairly reliable.\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"The-Universal-Argument-Command\">The Universal Argument Command<\/h3>\n\n\n\n<p>\nEmacs provides a \u201cuniversal-argument\u201d command, which can be used to pass a numerical argument to another command.  Basically, when you run the universal argument command, you are prompted to provide a numerical argument that will passed on to the next command.\n<\/p>\n\n\n\n<p>\nIn essence, the universal argument allows to repeat a command as many times as you have dictated.  For example, if you start recording a macro, press the letter \u201cl,\u201d stop recording the macro, then you have a macro that will insert a letter \u201cl\u201d onto your line.  If you prefix <code>&lt;f4&gt;<\/code> with a universal argument plus the number 5, for example, you will have five letter \u201cl\u201d characters inserted into your line.\n<\/p>\n\n\n\n<p>\nSo, if you know that you only need to repeat your macro for a definite number of iterations then you can prefix the <code>&lt;f4&gt;<\/code> with a universal argument.  If not, you can can just keep smashing that <code>&lt;f4&gt;<\/code> key until all your work is done.\n<\/p>\n\n\n\n<p>\nThe default key binding for the universal argument is <code>C-u<\/code>.  Here\u2019s the entry from the Emacs help menu:\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted example\">C-u runs the command universal-argument (found in global-map), which\nis an interactive compiled Lisp function.\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator\">\n\n\n\n<p> For more Emacs-related articles be sure to check out the <a href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/\">Emacs education channel<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ideal Emacs user is always looking for ways to speed up their work, or, as the saying goes, &#8220;Work smarter rather than harder.&#8221; Defining Emacs keyboard Macros will not only help you save time in your text editing but can also help you get a handle on some programming fundamentals. Emacs Keyboard Macros Save<a class=\"moretag\" href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\"> Read More ><\/a><\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4396],"tags":[],"class_list":["post-72872","post","type-post","status-publish","format-standard","hentry","category-emacs"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Emacs Keyboard Macros Explained (For Beginners)<\/title>\n<meta name=\"description\" content=\"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Emacs Keyboard Macros Explained (For Beginners)\" \/>\n<meta property=\"og:description\" content=\"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\" \/>\n<meta property=\"og:site_name\" content=\"InMotion Hosting Support Center\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inmotionhosting\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-17T16:54:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-23T16:41:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Christopher Maiorana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:site\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christopher Maiorana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\"},\"author\":{\"name\":\"Christopher Maiorana\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/c6922c56c84e17079fd558e07b7ef72f\"},\"headline\":\"Emacs Keyboard Macros To Speed Up Your Workflow\",\"datePublished\":\"2021-05-17T16:54:34+00:00\",\"dateModified\":\"2021-11-23T16:41:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\"},\"wordCount\":1045,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png\",\"articleSection\":[\"Emacs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\",\"name\":\"Emacs Keyboard Macros Explained (For Beginners)\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png\",\"datePublished\":\"2021-05-17T16:54:34+00:00\",\"dateModified\":\"2021-11-23T16:41:13+00:00\",\"description\":\"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png\",\"contentUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inmotionhosting.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Emacs Keyboard Macros To Speed Up Your Workflow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"name\":\"InMotion Hosting Support Center\",\"description\":\"Web Hosting Support &amp; Tutorials\",\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\",\"name\":\"InMotion Hosting\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"contentUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"width\":696,\"height\":696,\"caption\":\"InMotion Hosting\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inmotionhosting\/\",\"https:\/\/x.com\/InMotionHosting\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/c6922c56c84e17079fd558e07b7ef72f\",\"name\":\"Christopher Maiorana\",\"description\":\"Christopher Maiorana joined the InMotion community team in 2015 and regularly dispenses tips and tricks in the Support Center, Community Q&A, and the InMotion Hosting Blog.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/chris-m-4623144b\/\"],\"url\":\"https:\/\/www.inmotionhosting.com\/support\/author\/christopherm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Emacs Keyboard Macros Explained (For Beginners)","description":"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/","og_locale":"en_US","og_type":"article","og_title":"Emacs Keyboard Macros Explained (For Beginners)","og_description":"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.","og_url":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/","og_site_name":"InMotion Hosting Support Center","article_publisher":"https:\/\/www.facebook.com\/inmotionhosting\/","article_published_time":"2021-05-17T16:54:34+00:00","article_modified_time":"2021-11-23T16:41:13+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png","type":"image\/png"}],"author":"Christopher Maiorana","twitter_card":"summary_large_image","twitter_creator":"@InMotionHosting","twitter_site":"@InMotionHosting","twitter_misc":{"Written by":"Christopher Maiorana","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#article","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/"},"author":{"name":"Christopher Maiorana","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/c6922c56c84e17079fd558e07b7ef72f"},"headline":"Emacs Keyboard Macros To Speed Up Your Workflow","datePublished":"2021-05-17T16:54:34+00:00","dateModified":"2021-11-23T16:41:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/"},"wordCount":1045,"commentCount":0,"publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png","articleSection":["Emacs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/","url":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/","name":"Emacs Keyboard Macros Explained (For Beginners)","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros-1024x538.png","datePublished":"2021-05-17T16:54:34+00:00","dateModified":"2021-11-23T16:41:13+00:00","description":"Defining and running Emacs keyboard macros will save you a lot of time and energy, and help you learn some programming fundamentals.","breadcrumb":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#primaryimage","url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png","contentUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2021\/05\/Emacs-Keyboard-macros.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/emacs-keyboard-macros\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inmotionhosting.com\/support\/"},{"@type":"ListItem","position":2,"name":"Emacs Keyboard Macros To Speed Up Your Workflow"}]},{"@type":"WebSite","@id":"https:\/\/www.inmotionhosting.com\/support\/#website","url":"https:\/\/www.inmotionhosting.com\/support\/","name":"InMotion Hosting Support Center","description":"Web Hosting Support &amp; Tutorials","publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.inmotionhosting.com\/support\/#organization","name":"InMotion Hosting","url":"https:\/\/www.inmotionhosting.com\/support\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/","url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","contentUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","width":696,"height":696,"caption":"InMotion Hosting"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inmotionhosting\/","https:\/\/x.com\/InMotionHosting"]},{"@type":"Person","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/c6922c56c84e17079fd558e07b7ef72f","name":"Christopher Maiorana","description":"Christopher Maiorana joined the InMotion community team in 2015 and regularly dispenses tips and tricks in the Support Center, Community Q&A, and the InMotion Hosting Blog.","sameAs":["https:\/\/www.linkedin.com\/in\/chris-m-4623144b\/"],"url":"https:\/\/www.inmotionhosting.com\/support\/author\/christopherm\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"primary_category":{"id":4396,"name":"Emacs","slug":"emacs","link":"https:\/\/www.inmotionhosting.com\/support\/edu\/emacs\/"},"_links":{"self":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/72872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/comments?post=72872"}],"version-history":[{"count":10,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/72872\/revisions"}],"predecessor-version":[{"id":92453,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/72872\/revisions\/92453"}],"wp:attachment":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/media?parent=72872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/categories?post=72872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/tags?post=72872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}