{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/2013/04/09/vim-adventures-a-fun-way-to-pick-up-some-basic-skills",
    "result": {"data":{"site":{"siteMetadata":{"title":"your friend Joel's digital garden","description":"Articles and notes from a collaborator at egghead.io. Musings on software, business, and life from a skilled virtual assistant.","author":{"name":"Joel Hooks"},"keywords":["Video Blogger"]}},"mdx":{"excerpt":"Vim Adventures  is a fun browser based game that\nteaches basic VIM skills while adventuring. It is kind of silly, and can be a\nbit... frustrating... but that is the point. This is VIM after all! No pain, no\ngain ;)","fields":{"github":"https://github.com/joelhooks/joelhooks-com/tree/master/content/legacy_blog/2013-04-09-vim-adventures-a-fun-way-to-pick-up-some-basic-skills.markdown"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"layout\": \"post\",\n  \"title\": \"VIM Adventures: A Fun Way to Pick up Some Basic Skills\",\n  \"date\": \"2013-04-09T00:00:00.000Z\",\n  \"comments\": true\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"800px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/15b6526ae3eea04c55ad093c880f47b5/4b190/vim_adventures.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"59.07335907335908%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAECBP/EABQBAQAAAAAAAAAAAAAAAAAAAAL/2gAMAwEAAhADEAAAAcTi0UMK/8QAGRAAAwADAAAAAAAAAAAAAAAAAAERAhIx/9oACAEBAAEFAsYPVuCF0//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/AUf/xAAXEQEBAQEAAAAAAAAAAAAAAAABABIh/9oACAECAQE/AV7ab//EABgQAAIDAAAAAAAAAAAAAAAAAAAhASAx/9oACAEBAAY/AmKDaf/EABoQAQACAwEAAAAAAAAAAAAAAAEAERAhMXH/2gAIAQEAAT8h1tSdVD2UeqKK8P/aAAwDAQACAAMAAAAQTC//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oACAEDAQE/EFrhB//EABYRAQEBAAAAAAAAAAAAAAAAAAEAYf/aAAgBAgEBPxBxFpf/xAAbEAEAAwADAQAAAAAAAAAAAAABABEhQVFhkf/aAAgBAQABPxBaBpqK1Tx8ibk8HB73FlofYwNMbRlT/9k=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Vim Adventures\",\n    \"title\": \"Vim Adventures\",\n    \"src\": \"/static/15b6526ae3eea04c55ad093c880f47b5/4b190/vim_adventures.jpg\",\n    \"srcSet\": [\"/static/15b6526ae3eea04c55ad093c880f47b5/8356d/vim_adventures.jpg 259w\", \"/static/15b6526ae3eea04c55ad093c880f47b5/bc760/vim_adventures.jpg 518w\", \"/static/15b6526ae3eea04c55ad093c880f47b5/4b190/vim_adventures.jpg 800w\"],\n    \"sizes\": \"(max-width: 800px) 100vw, 800px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://vim-adventures.com/\"\n  }, \"Vim Adventures\"), \" is a fun browser based game that\\nteaches basic VIM skills while adventuring. It is kind of silly, and can be a\\nbit... frustrating... but that is the point. This is VIM after all! No pain, no\\ngain ;)\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"VIM Adventures: A Fun Way to Pick up Some Basic Skills","date":"April 09, 2013","banner":null,"slug":null,"keywords":null}}},"pageContext":{"id":"bd42a971-34e0-57d6-a11e-2d590093a742","prev":{"id":"9252a7af-96fd-5b52-806d-005870fc1911","parent":{"name":"2013-04-09-getting-to-know-vim","sourceInstanceName":"legacy"},"excerpt":"It's like coming full circle. When I was first introduced to computers, they very much resembled what I see in\nTerminal today. I've always had a distinct fondness for the command line\ninterface. That said, when I started using computers…","fields":{"title":"Getting to Know VIM","slug":"blog/2013/04/09/getting-to-know-vim","date":"2013-04-09T00:00:00.000Z"}},"next":{"id":"18235215-6af2-59bd-9937-823f7d7ca5a0","parent":{"name":"2012-11-17-using-custom-jasmine-matchers-to-make-unit-tests-more-readable","sourceInstanceName":"legacy"},"excerpt":"Image from purplemattfish I'm a stickler for the \"single assertion per test\" guideline. One of the pillars of good unit tests is readability. Multiple asserts undermine this principle and make tests that are more difficult to read, understand, and…","fields":{"title":"Using Custom Jasmine Matchers to Make Unit Tests More Readable","slug":"blog/2012/11/17/using-custom-jasmine-matchers-to-make-unit-tests-more-readable","date":"2012-11-17T00:00:00.000Z"}}}},
    "staticQueryHashes": ["1045846374"]}