<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Julian Iaquinandi</title>
    <description>The latest articles on DEV Community by Julian Iaquinandi (@juliani).</description>
    <link>https://dev.to/juliani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F44498%2Fc4a8a67b-23da-44f3-9588-b7108c9f29cb.png</url>
      <title>DEV Community: Julian Iaquinandi</title>
      <link>https://dev.to/juliani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juliani"/>
    <language>en</language>
    <item>
      <title>My Keyboard Journey</title>
      <dc:creator>Julian Iaquinandi</dc:creator>
      <pubDate>Tue, 14 Dec 2021 23:56:33 +0000</pubDate>
      <link>https://dev.to/juliani/my-keyboard-journey-3pd4</link>
      <guid>https://dev.to/juliani/my-keyboard-journey-3pd4</guid>
      <description>&lt;p&gt;A couple of years ago I went down the rabbit hole of custom mechanical keyboards and I had no idea I was about to uncover a mountain of ideas, concepts, layouts and boards that I never considered!&lt;/p&gt;

&lt;p&gt;It started with gaming. I was looking for a smaller keyboard to give me more mousing room after getting back into PC gaming and found myself in awe of the crazy keyboards I was coming across like this beast!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackaday.com%2Fwp-content%2Fuploads%2F2021%2F10%2Fsuperlyra-800.jpg%3Fw%3D800" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhackaday.com%2Fwp-content%2Fuploads%2F2021%2F10%2Fsuperlyra-800.jpg%3Fw%3D800" alt="mech keboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After ALOT of research, my focus shifted from gaming to programming and my everyday use of the interface to my world. The first board I got was a &lt;a href="https://kbdfans.com/products/niu-mini-40-pcb-full-program?_pos=1&amp;amp;_sid=b78090af0&amp;amp;_ss=r" rel="noopener noreferrer"&gt;Niu Mini&lt;/a&gt; I really liked the feel of this board and was excited to try something new where the layout dictated that I wouldn't have to move my fingers more than the length of one key away to produce any keystroke I desired. How is that achieved? With layers! You can think of these as extra shift keys that allow you to move any keystroke or even macros to your desired location.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2Faeb6d7eb-1478-4dc8-94b4-68f77cb8cba3~3%2Fnth%2F0%2F-%2Fformat%2Fauto%2F-%2Fquality%2Flighter%2F" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2Faeb6d7eb-1478-4dc8-94b4-68f77cb8cba3~3%2Fnth%2F0%2F-%2Fformat%2Fauto%2F-%2Fquality%2Flighter%2F" alt="niu mini"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This seemed long-winded at first, having to learn a whole new layout but seeing as I plan to use my digits to earn money for the foreseeable future I thought I better start looking after them!&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning to type.... again
&lt;/h2&gt;

&lt;p&gt;At this point, I could type at a modest 40-60 words per minute but I knew that I wasn't typing correctly. My fingers would press keys on the far side of the keyboard and it felt like my hands were floating around causing lots of incorrect key presses. I had built up some pretty shocking muscle memory over the years.&lt;/p&gt;

&lt;p&gt;First on the agenda was to learn how to type correctly. I used sites to try and learn the 'correct' way to type, &lt;a href="https://play.typeracer.com/" rel="noopener noreferrer"&gt;Typeracer&lt;/a&gt; was the first I found. Although this was good for training speed it wasn't teaching me how to do things correctly. This is where &lt;a href="https://www.typingclub.com/" rel="noopener noreferrer"&gt;Typing Club&lt;/a&gt; came in. It teaches you what fingers should go where and builds you up slowly by issuing challenges that only use a certain set of keys to slowly retrain your muscle memory. &lt;/p&gt;

&lt;p&gt;Typing Club allows you to do so much before you hit a paywall. I did buy the full version but the free version is more than suitable to get you going and you can use other sites once you hit the wall.&lt;/p&gt;

&lt;p&gt;I found these sites very useful but found my fingers still moving across to the wrong side every now and again, Damn muscle memory! It was getting better but I would hit keys like y, b and n with my left hand. The solution to rid my fingers of this curse was to use a split board so I had no choice in the matter other than furiously hitting my desk with my index finger.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FMr5nelxN2AAAAAAd%2Ftense1983-rage.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FMr5nelxN2AAAAAAd%2Ftense1983-rage.gif" alt="keeb rage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Split boards
&lt;/h2&gt;

&lt;p&gt;I had read quite a bit about split boards after seeing a video about the &lt;a href="https://www.youtube.com/watch?v=TconD669TjI" rel="noopener noreferrer"&gt;Kenesis advantage 2&lt;/a&gt; but didn't fancy a rubber dome style board after feeling the feedback that mechanical keys had to offer.&lt;/p&gt;

&lt;p&gt;The first split board was a let's split. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpreview.redd.it%2F5yjfcafflmy01.jpg%3Fwidth%3D960%26crop%3Dsmart%26auto%3Dwebp%26s%3D3e61f45b1d48e41314ef540ce83e8c5ff701954a" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpreview.redd.it%2F5yjfcafflmy01.jpg%3Fwidth%3D960%26crop%3Dsmart%26auto%3Dwebp%26s%3D3e61f45b1d48e41314ef540ce83e8c5ff701954a" alt="let's split"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This worked great for retraining my muscle memory and the benefits of split boards started to become more apparent to me. It's a great feeling leaning back in your chair, arms shoulder-width apart, not only is it far comfier than keeping your hands centre stage constantly but it really gives you that feeling of being a Hackerman :D&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia2.giphy.com%2Fmedia%2F3knKct3fGqxhK%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia2.giphy.com%2Fmedia%2F3knKct3fGqxhK%2Fgiphy.gif" alt="Hackerman"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Less is more!
&lt;/h2&gt;

&lt;p&gt;Over my iterations of keyboards, I had realised that I didn't need as many keys as I thought, in fact, a lot less which led me to the mini version of the CRKBD/Corne style board.&lt;/p&gt;

&lt;p&gt;This had the right amount of keys that I was looking for and for extra ergonomic points has keys that are staggered vertically to closer match the shape of your hand! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpreview.redd.it%2Fv1kv9qvrlqz51.jpg%3Fwidth%3D4032%26format%3Dpjpg%26auto%3Dwebp%26s%3D530154408c3e44e2d49f850fcdb20045cb634d03" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpreview.redd.it%2Fv1kv9qvrlqz51.jpg%3Fwidth%3D4032%26format%3Dpjpg%26auto%3Dwebp%26s%3D530154408c3e44e2d49f850fcdb20045cb634d03" alt="Not mine but noicee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It foregoes the end rows that normally have your modifiers buttons and tab when compared to the Let's Split. This helped my typing by removing the 'distractions' for my fingers, in the same way, removing the number row had when getting the Let's Split.&lt;/p&gt;

&lt;p&gt;The reduction in keys has meant more layer gymnastics and layout changes to accommodate the smaller number of keys, that was until I found out about home row modifiers. These changed the game for me, if you aren't familiar with home row mods I implore you to read this article as it doesn't get any better: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://precondition.github.io/home-row-mods" rel="noopener noreferrer"&gt;A guide to home row mods&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They allow you to bind the hold function of any key to act as a modifier. I cannot tell you how liberating this felt after building up all this knowledge about how my fingers should live on the home row and it felt great! Not only can you bind modifiers but also layer shifts to ANY button! There are lots of other features software like QMK, ZMK and KMonad provide but this for me is by far the most useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software and controllers
&lt;/h2&gt;

&lt;p&gt;As mentioned I've tried a few boards and it's the microcontroller that will dictate what software you can and can't use with your new board. The most common is QMK which is the OG of the mechanical keyboard world as most microcontrollers will support it. With my latest board, I wanted to go wireless which either requires a fair bit of modding/overhead to get going with your standard Arduino micro so I opted for the NiceNano! This board supports Bluetooth as a first-party feature so was perfect for what I wanted to achieve. &lt;/p&gt;

&lt;p&gt;Up until this point I had only used &lt;a href="https://qmk.fm/" rel="noopener noreferrer"&gt;QMK&lt;/a&gt; but Nice!nano doesn't support it which led me to &lt;a href="https://zmk.dev/" rel="noopener noreferrer"&gt;ZMK&lt;/a&gt;. It is very similar but like the Nice!nano it supports wireless keyboards out of the box, perfect!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.chesscomfiles.com%2Fuploads%2Fv1%2Fimages_users%2Ftiny_mce%2Fthematedkid%2FphpPlfUuy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.chesscomfiles.com%2Fuploads%2Fv1%2Fimages_users%2Ftiny_mce%2Fthematedkid%2FphpPlfUuy.gif" alt="noice"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I mentioned &lt;a href="https://github.com/kmonad/kmonad" rel="noopener noreferrer"&gt;Kmonad&lt;/a&gt; earlier, this software lets you remap any keyboard that's attached as an OS level. I use this on my laptop to replicate the layout of my mechanical board the best I can. I'm not going to go into Kmonad here but it does mention it in the home row mods article mentioned earlier. Here's a peek at my &lt;a href=""&gt;config&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My layout
&lt;/h2&gt;

&lt;p&gt;Layouts are very personal to each user but looking at what other people have done is always a good starting point. I remembered an &lt;a href="https://colemakmods.github.io/ergonomic-mods/extend.html" rel="noopener noreferrer"&gt;article&lt;/a&gt; that I had read a while back that really started me off on this journey of creating my own shift keys/layers so I used that as a starting point. &lt;/p&gt;

&lt;p&gt;And boyyy how it's changed over the years. We are always looking for an endgame but I feel accepting your ever-changing fate is part and parcel of wandering down this road. I will say that for the last 6 months to a year the layout hasn't changed that much but you will always find things to improve the ergonomics of your layout, at the time of writing this I have updated my layout just a few days previous!&lt;/p&gt;

&lt;p&gt;Here are my layers: &lt;/p&gt;

&lt;p&gt;Mac(base)&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d7k3z11vs9ll25nmcy4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d7k3z11vs9ll25nmcy4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Windows&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylwush4rdc5q7jhko5sw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylwush4rdc5q7jhko5sw.png" alt="Image description"&gt;&lt;/a&gt;Windows(base)&lt;/p&gt;

&lt;p&gt;Punctuation&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpl6ty77r5683o2p4kq34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpl6ty77r5683o2p4kq34.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Numbers&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9k434hvlbc23t97ad9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9k434hvlbc23t97ad9d.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the full config check it out &lt;a href="https://github.com/julian-iaquinandi/zmk-config/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my most 'sane' layout so far with the latest edition being placing the Punctuation buttons under my pinkies and moving either the Windows or Control keys to the Z and / keys depending on the OS I'm using. This lessens the dependency on my thumbs (which I'm not 100% on yet) to switch layers as much as I was starting to feel like it was breaking my flow when programming too much. The same goes for the Numbers keys although I had moved them some time ago. You will notice I still have these layer swaps on my thumbs but the plan is to remove them once I'm a bit more used to it or if it doesn't work rollback! &lt;/p&gt;

&lt;p&gt;I originally had the Numbers and Punctuation layers split across even more layers but with the intro to home row modifiers, I was able to condense four extra layers to two. Doesn't seem that bad right?&lt;/p&gt;

&lt;p&gt;Having home row mods means having to utilise the correct modifier with the opposite hand to where your desired key lives. This at first was jarring as I did a lot of one hand combos but I'm falling in love with Vim more and more each day and working like this means keeping both hands firmly on the board which is one of my goals. &lt;/p&gt;

&lt;p&gt;I know I should swap to I3 or another tiling window manager to get there fully but I've found my setup intuitive enough.... for now. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping it up
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FtyWkjCQNZCAAAAAC%2Fwrapitup.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc.tenor.com%2FtyWkjCQNZCAAAAAC%2Fwrapitup.gif" alt="wrapping it up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, if you have read all of this and think the intention was so to become a faster typer, this was never the goal. I would argue that my typing speed is now a little higher than it was before but the goal of this journey has always been ergonomics. My hands move exponentially less than they did before and it feels a great deal comfier and I feel better knowing I'm looking after my work tools better XD&lt;/p&gt;

&lt;p&gt;To take that to the next level I'm considering learning a new layout like Colemak or Workman but one step at a time... and I don't have the time at the moment to take a typing holiday to readjust but I know I'm going there at some point. I may even learn Stenography, the method used in courtrooms and on live subtitles to type at speeds of up to 240 words per minute!?! Here's a &lt;a href="https://www.youtube.com/watch?v=Wpv-Qb-dB6g" rel="noopener noreferrer"&gt;great talk&lt;/a&gt; by the creator of the Plover software that vastly reduces the barrier to entry. &lt;/p&gt;

&lt;p&gt;I hope you have enjoyed my journey and if the mood strikes please leave a comment! For example: 'Hey Julian, nice article but your layout is trash and here's why!' I don't put myself out there nearly enough and really appreciate any and all feedback!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>VSCode Neovim Theme Modifier 🎨</title>
      <dc:creator>Julian Iaquinandi</dc:creator>
      <pubDate>Mon, 26 Oct 2020 18:09:08 +0000</pubDate>
      <link>https://dev.to/juliani/vscode-neovim-theme-modifier-51gg</link>
      <guid>https://dev.to/juliani/vscode-neovim-theme-modifier-51gg</guid>
      <description>&lt;p&gt;To commit to a mouse-less future I've been working to make a workflow that doesn't have me moving away from the home row.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjwz18zz7cxqpdxo2ci01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjwz18zz7cxqpdxo2ci01.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over the years I've tried my hardest to get into &lt;a href="https://www.vim.org/" rel="noopener noreferrer"&gt;Vim&lt;/a&gt;. I love the idea of it but my interest ends up trailing off... Not this time!!&lt;/p&gt;

&lt;p&gt;I've also got into mechanical keyboards in a big way and now type on a 40% split! Getting rid of over half the keys has sped me up quite a bit - I may write an article just on this. This felt like the perfect time to give Vim a proper go.&lt;/p&gt;

&lt;p&gt;I had used the &lt;a href="https://github.com/VSCodeVim/Vim" rel="noopener noreferrer"&gt;VSCodeVim&lt;/a&gt; plugin in my previous futile attempts in moving to the Vim workflow. It works great, but what piqued my interest (and sent me back down this rabbit hole) in Vim again was finding &lt;a href="https://neovim.io/" rel="noopener noreferrer"&gt;Neovim&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkmgbcarm1ajfshi0k1ji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkmgbcarm1ajfshi0k1ji.png" alt="Neovim"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hadn't used Neovim and proceeded to download the GUI app. After seeing how rich the feature set is and the extensive plugin library it started to appeal to me as it didn't feel like I was comprising vs using VSCode. In researching it further I found the &lt;a href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim" rel="noopener noreferrer"&gt;Neovim Extension&lt;/a&gt; which seemed to be what &lt;a href="https://github.com/VSCodeVim/Vim" rel="noopener noreferrer"&gt;VSCodeVim&lt;/a&gt; is to &lt;a href="https://www.vim.org/" rel="noopener noreferrer"&gt;Vim&lt;/a&gt;, but it was much more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa4f8jscf7k54nve9vibi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa4f8jscf7k54nve9vibi.png" alt="Neovim Extension"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/VSCodeVim/Vim" rel="noopener noreferrer"&gt;VSCodeVim&lt;/a&gt; works by emulating Vim in VSC &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim" rel="noopener noreferrer"&gt;Neovim Extension&lt;/a&gt; differs in that it's communicating with a real instance of Neovim via its API. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives us the best of both worlds, not only is it really fast ⚡ but we now have the full feature sets (almost) of both editors.&lt;/p&gt;

&lt;p&gt;For more info on the &lt;a href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim" rel="noopener noreferrer"&gt;Neovim Extension&lt;/a&gt; extension and how to get it up and running see Chris@Machine's &lt;a href="https://www.chrisatmachine.com/Neovim/22-vscodium-neovim/" rel="noopener noreferrer"&gt;Blog&lt;/a&gt; and Video which really helped me get going.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/g4dXZ0RQWdw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;An interesting feature of &lt;a href="https://github.com/VSCodeVim/Vim" rel="noopener noreferrer"&gt;VSCodeVim&lt;/a&gt; is that you can change the status bar colour based on what mode you are in. This is handy with VSC's status bar being quite small, especially on high res monitors:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0d4gc0c2jf16z29nws86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0d4gc0c2jf16z29nws86.png" alt="High Res"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yes I know I can zoom in&lt;/em&gt; 😛 &lt;/p&gt;

&lt;p&gt;I couldn't find a solution to this functionality for &lt;a href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim" rel="noopener noreferrer"&gt;Neovim&lt;/a&gt;. This problem paired with my interest to finally make a VSC extension is why I created &lt;a href="https://marketplace.visualstudio.com/items?itemName=JulianIaquinandi.nvim-ui-modifier" rel="noopener noreferrer"&gt;NeoVim UI Modifier&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwo6bt81z7b2q93eibj51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwo6bt81z7b2q93eibj51.png" alt="Neovim theme modifier"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It takes changing the colour of the status bar one step further by changing the colour of a few key UI elements:&lt;/p&gt;

&lt;p&gt;Statusbar + Panel outline: &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwy08lwqavea78kpzjk83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwy08lwqavea78kpzjk83.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sidebar icons: &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjrpgwado3log2eyftlj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjrpgwado3log2eyftlj7.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor + Tab underline: &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fup5uaqa8y53z45b383yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fup5uaqa8y53z45b383yw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It currently supports picking colours for Normal, Insert and Visual mode; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7qy1sd8yxd3lgd6qg6k5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7qy1sd8yxd3lgd6qg6k5.gif" alt="Neovim theme modifier gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm looking to expand this to Replace and Search modes as my Vim knowledge grows, there have been a few unsuccessful attempts so far. If you have any ideas please let me know/create a pull request: &lt;a href="https://github.com/kensleDev/vscode-nvim-ui" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By default the colours used are to match the theme I use &lt;a href="https://github.com/wesbos/cobalt2-vscode" rel="noopener noreferrer"&gt;Cobalt2&lt;/a&gt; by &lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__28651"&gt;
    &lt;a href="/wesbos" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F28651%2Fa5319206-2a7d-4ca2-8b53-159145e589eb.png" alt="wesbos image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/wesbos"&gt;Wes Bos&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/wesbos"&gt;I'm a full stack developer&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;and have done for over a year now! To make sure it works for your theme you can change to colours in settings.json:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcozljqur5f9acbivi18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcozljqur5f9acbivi18.png" alt="settings.json"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm open to any feedback so if you use NeoVim for VSCode please give it a try! &lt;/p&gt;

&lt;p&gt;Available in the VSC marketplace, search for: Neovim &lt;/p&gt;

&lt;p&gt;or click &lt;a href="https://github.com/kensleDev/vscode-nvim-ui" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>vim</category>
      <category>tools</category>
      <category>plugins</category>
    </item>
    <item>
      <title>How to extend your keyboard in Windows</title>
      <dc:creator>Julian Iaquinandi</dc:creator>
      <pubDate>Thu, 28 Nov 2019 11:01:32 +0000</pubDate>
      <link>https://dev.to/juliani/how-to-extend-your-keyboard-in-windows-4399</link>
      <guid>https://dev.to/juliani/how-to-extend-your-keyboard-in-windows-4399</guid>
      <description>&lt;p&gt;I am a massive proponent of streamlining my workflow and I feel one of the biggest improvements I've made in this area is simply navigating my computer. It's something I don't hear about much, in fact I know a few devs that don't even learn the hotkeys that come with Windows or their IDE and are happy to point and click their way through the day. Although there is nothing wrong with this I personally feel that there are massive benefits in shortcuts, hotkeys and macros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why would you do this? 🤷‍
&lt;/h2&gt;

&lt;p&gt;I've fallen in and out of favour with &lt;a href="https://www.vim.org/" rel="noopener noreferrer"&gt;Vim&lt;/a&gt; over the last couple of years, having only been developing for 3-4 years Vim keeps sucking back into its black hole. I manage to stay out of it most of the time nowadays but what's really appealing about Vim for me is the mouseless operation, I really took to the idea of not having to move your hands away from the home row.&lt;/p&gt;

&lt;p&gt;Apart from looking like a 90's hacker&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyzkwn1fic0jtv3xf6px2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyzkwn1fic0jtv3xf6px2.gif" alt="Hack the planet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;there are productivity gains in not using the mouse or even the arrow keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prep 📖
&lt;/h2&gt;

&lt;p&gt;I set out originally only looking for a solution to move my arrow keys to the home row permanently. To do this there were a few problems that had to be solved:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;How to implement it (What program?)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How would the keys be activated? (What modifier?)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I had used AutoHotKey in the past but had drastically underestimated the power of this tool by only using it to create the odd macro for repeating tasks at work or for games. After researching other options (AutoIt and Kantu) I decided to go with AutoHotKey as it seemed well documented, mature and I had previous experince.&lt;/p&gt;

&lt;h4&gt;
  
  
  Small Aside
&lt;/h4&gt;

&lt;p&gt;It's worth noting I did find a handy browser extension that does fulfil some of my requirements (re mapping of arrow keys) but only in chrome. &lt;a href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en" rel="noopener noreferrer"&gt;Vimium&lt;/a&gt; adds basic vim-like navigation to the browser but unfortunately I couldn't leverage it as it only works in the browser. Definitely worth a look as it's a plugin I still use daily.&lt;/p&gt;

&lt;h2&gt;
  
  
  The modifier hidden in plain sight 🙈
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fa6h6fc6xe5l9j84tjezv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fa6h6fc6xe5l9j84tjezv.jpg" alt="Hidden in plain sight"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had started to address what key would be used to modify the home row to allow for the input of arrow keys in a vim-like style:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Direction&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Left&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;Right&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After debating for what seemed like an age if to use CTRL, ALT or WIN/META keys I came across an article which was talking about swapping the escape and CAPSLOCK and there it was... staring me right in the face gathering dust...&lt;/p&gt;

&lt;h4&gt;
  
  
  Caps Lock!
&lt;/h4&gt;

&lt;p&gt;I started practising hotkeys with the caps under my little digit and it was a pure penny drop moment. It felt so comfortable and natural compared to anything that lives on the bottom row.&lt;/p&gt;

&lt;p&gt;Let's be honest, it's probably the most wasteful key on the keyboard:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It's massive&lt;/li&gt;
&lt;li&gt;The functionality it brings can be achieved by holding shift&lt;/li&gt;
&lt;li&gt;It's used much less than other more useful keys that are harder to reach like ESCAPE and most of the keys on the bottom row&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  CAPSLOCK === new modifier 💡💡💡
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fktguigt1dw63dk8qba4c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fktguigt1dw63dk8qba4c.jpg" alt="Caps Lock"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was probably the trickiest part of setting this up. I wanted this new modifier to work well, as a modifier. The issue with this is that there are only a few keys that work as modifiers namely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CAPSLOCK&lt;/li&gt;
&lt;li&gt;CTRL&lt;/li&gt;
&lt;li&gt;ALT&lt;/li&gt;
&lt;li&gt;WIN/META&lt;/li&gt;
&lt;li&gt;ALT GR (CTRL + ALT (most of the time))&lt;/li&gt;
&lt;li&gt;SHIFT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We could just swap CTRL and CAPS which isn't a bad deal, you don't have to learn any new combinations/macros and get all the accessibility benefits of using CAPS. The issue with this approach is that I want to make my own macros and it's much easier to start with a blank slate then it is to figure out which commands you might be overwriting in different programs by remapping CTRL + whatever to your own macro.&lt;/p&gt;

&lt;p&gt;I attempted to create this functionality in AutoHotKey and after hours of messing around and then the subsequent google session I found the following snippet to do what I wanted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Persistent
SetCapsLockState, AlwaysOff
; Caps Lock Disable
capslock::return
; Caps Lock with shift+caps
+Capslock::
If GetKeyState("CapsLock", "T") = 1
  SetCapsLockState, AlwaysOff
Else
  SetCapsLockState, AlwaysOn
Return
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The snippet achieves two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It turns CAPSLOCK off so it doesn't work as CAPSLOCK&lt;/li&gt;
&lt;li&gt;Enables SHIFT + CAPSLOCK to recreate normal CAPSLOCK functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  THIS IS AMAZING
&lt;/h3&gt;

&lt;p&gt;Not only can I now assign whatever I want to CAPSLOCK + my_desired_key but I can turn caps lock back on if needed with SHIFT + CAPS.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I don't know how to measure how much time I had put into finding a way to "Add" a modifier up until this point, all I can tell you is when I found this my head didn't leave my desk for 10 minutes&lt;/em&gt; 🤦‍♂ &lt;em&gt;As always the simplest solutions prevail!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For example to assign CTRL + c to CAPSLOCK + c it would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Capslock &amp;amp; c::send, ^c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're not familiar with AutoHotKey the part on left-hand side of the '::' is the combo you would like to press. On the right-hand side is the command to execute, so 'send, ^c' means Send keys CTRL + C.&lt;/p&gt;

&lt;p&gt;In this context ^ = CTRL see &lt;a href="https://www.autohotkey.com/docs/Hotkeys.htm" rel="noopener noreferrer"&gt;here&lt;/a&gt; for a full reference&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it all together 🥳
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8wkh7ae9ecn08bbbj3wk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8wkh7ae9ecn08bbbj3wk.jpg" alt="Excellent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So now we can define custom hotkey combos to do tasks for us this is what it looks like to remap the directional buttons to the home row:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CapsLock &amp;amp; h::Left
CapsLock &amp;amp; j::Down
CapsLock &amp;amp; k::Up
CapsLock &amp;amp; l::Right
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easy, right? So let's take it a bit further. Above the arrow keys, I like to have some of the keys you would typically find in between the main set of keys and the Numpad.&lt;/p&gt;

&lt;p&gt;Adding those in is as easy as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Capslock &amp;amp; y::Home
CapsLock &amp;amp; o::End
CapsLock &amp;amp; u::PgDn
CapsLock &amp;amp; i::PgUp

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This, in combination with the arrows not only is more comfy but has levelled up my navigation skills in a big way 💪&lt;/p&gt;

&lt;p&gt;While we are on the topic of navigation here are the other useful commands I use for navigating my computer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Capslock &amp;amp; space::Escape
CapsLock &amp;amp; &amp;lt;::BackSpace
CapsLock &amp;amp; &amp;gt;::Delete

CapsLock &amp;amp; 1::switchDesktopByNumber(1)
CapsLock &amp;amp; 2::switchDesktopByNumber(2)
CapsLock &amp;amp; 3::switchDesktopByNumber(3)
CapsLock &amp;amp; 4::switchDesktopByNumber(4)
CapsLock &amp;amp; 5::switchDesktopByNumber(5)

CapsLock &amp;amp; s::switchDesktopByNumber(CurrentDesktop + 1)
CapsLock &amp;amp; a::switchDesktopByNumber(CurrentDesktop - 1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See &lt;a href="https://ihelper.in/using-autohotkey-to-switch-virtual-desktops-in-win" rel="noopener noreferrer"&gt;here&lt;/a&gt; for the desktop switching function&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up 🏁
&lt;/h2&gt;

&lt;p&gt;Now you have the basics of creating your own layer of hotkeys what will you do with it?&lt;/p&gt;

&lt;p&gt;If you're interested in learning how to do this on Linux let me know with a comment below and I will show you how I translated this to my Linux rig.&lt;/p&gt;

&lt;p&gt;📕 TLDR: Remap useful keys to a custom layer/new modifier using AutoHotKey&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>windows</category>
      <category>autohotkey</category>
    </item>
    <item>
      <title>How I automate my OS 💻</title>
      <dc:creator>Julian Iaquinandi</dc:creator>
      <pubDate>Wed, 27 Nov 2019 11:06:36 +0000</pubDate>
      <link>https://dev.to/juliani/how-i-automate-my-os-1cbc</link>
      <guid>https://dev.to/juliani/how-i-automate-my-os-1cbc</guid>
      <description>&lt;p&gt;When I started developing, in particular on servers I started writing scripts to get them set up which mainly stemmed from the fact I didn’t know what I was doing. I would boot up a virtual machine or VPS and start tinkering with Apache or Nginx, change a setting nonchalantly not thinking about it. 10 minutes later I’m desperately trying to find which setting has changed, most of the time leaving me feeling like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2z2z45ffcydl9voy6zhl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2z2z45ffcydl9voy6zhl.jpg" alt="server mess"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I thought there has to be a better way and there is! Enter Bash Scripts! &lt;/p&gt;

&lt;p&gt;Using Linux at the time made it easy to write scripts to install everything I needed for a new instance. I started to take what I called the destructible approach whereby I don’t install anything on an instance unless it’s in the script. What that meant is I could tear down my server and get it back to where it was in less than 10 minutes. Beautiful. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsteamuserimages-a.akamaihd.net%2Fugc%2F307738670230847301%2F02FCBC35FC39EC8A78464A4CB62F049987C44892%2F" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsteamuserimages-a.akamaihd.net%2Fugc%2F307738670230847301%2F02FCBC35FC39EC8A78464A4CB62F049987C44892%2F" alt="great success"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then it clicked. Why not use this pattern in my normal setup? 🤯🤯🤯&lt;/p&gt;

&lt;p&gt;Below I will explain how I achieved this on Linux and Windows.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux &lt;a&gt;&lt;/a&gt; 💻
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fixp1x8blye2pkvoud3wo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fixp1x8blye2pkvoud3wo.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jump to windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I got to it and started creating what I now know as “Linux Tools” which is my set of scripts that do the above and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installs ⚡
&lt;/h3&gt;

&lt;p&gt;As Linux is a command-line driven which means apps can be installed via the command-line, for example, to install a package/app the most common approach is to use a package manager, we call the one that comes with Ubuntu apt.&lt;/p&gt;

&lt;p&gt;To install git you will issue the following commands (in an Ubuntu flavoured distribution):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;First command updates repositories&lt;/li&gt;
&lt;li&gt;Second installs git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The advantage of installing programs in this way is that it is scriptable. We can put the above into a script(.sh) file and then run from the command line.&lt;/p&gt;

&lt;p&gt;If we saved the above into the file “installGit.sh” there are 2 commands used to get the script ready to execute and then run.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod u+x ./installGit.sh
sh ./installGit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The first command makes the script executable and only needs to be run once on each script.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The second command runs the script as if we had run the commands in the terminal ourselves.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any command that can be executed in the terminal can be scripted this way allowing us to set up our environment extremely quickly. &lt;/p&gt;
&lt;h3&gt;
  
  
  Functions 🛠
&lt;/h3&gt;

&lt;p&gt;I use functions to organise code, I call update at the start of the script to avoid having to call it in each function:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update

# function definition
GIT_INSTALL () {
  sudo apt-get install git
}

# function call
GIT_INSTALL

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This may seem like a lot of boilerplate but the advantage is that there may be many steps to installing an app that can be encapsulated into a single function, the above is the most simple example.&lt;/p&gt;
&lt;h3&gt;
  
  
  Dotfiles 📁
&lt;/h3&gt;

&lt;p&gt;The above explains the automation of installing packages but what blew my mind when first getting into this is being able to restore the apps the state I had them in previous to a reinstall 🤯 This is where Dotfiles come in. I’m not going to go into lots of detail about Dotfiles as you can find that on this awesome post:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/mmphego" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F29455%2Fc66a1404-faf0-4eed-9cf1-959e7f84c011.jpg" alt="mmphego"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/mmphego/how-i-increased-my-productivity-using-dotfiles-2f4m" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How I increased my productivity using dotfiles [updated]&lt;/h2&gt;
      &lt;h3&gt;Mpho Mphego ・ Mar 3 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#dotfiles&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#linux&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Simply put Dotfiles are user configuration files 🔧. This would hold any changes to settings you the user has made the program/app in question. One of the most common you may have come across is .gitconfig which stores info about your git account on your local system. When you run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config credential.username “new_username”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It will update your .gitconfig with:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[user]
    email = julianiaquinandi@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;As mentioned I have a set of files that get copied to where they need to go as part of my install, you can find my dotfiles &lt;a href="https://github.com/kensleDev/linux-tools/tree/master/dotfiles" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Aliases 👻
&lt;/h3&gt;

&lt;p&gt;I use aliases to quickly perform commands without having to type the whole thing out. So in this scenario, you could map the alias “installOs” to run your installer script. It’s not a practical example as you're not likely to need to run your installer script all the time, although I thought it was worth mentioning because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Aliases are awesome and save me lots of time&lt;/li&gt;
&lt;li&gt;Part of my install script copies my aliases file from a repo to my local install ready to be consumed by the command line. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you haven’t used them before I would recommend checking this article for a primer:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/aniketsmk" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F37073%2F0b757ac1-6dbb-4c02-acd2-41469a9dac14.jpg" alt="aniketsmk"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aniketsmk/bash-aliases-aka-part-1-of-2000-of-how-to-get-more-done-in-less-time-3lp6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Bash Aliases (aka part 1 of 2000 of how to get more done in less time)&lt;/h2&gt;
      &lt;h3&gt;Aniket Kadam ・ May 31 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#timemanagement&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#shortcuts&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;h1&gt;
  
  
  Windows &lt;a&gt;&lt;/a&gt; 💻
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2i9kad99boqo47vazvah.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2i9kad99boqo47vazvah.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jump to linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Granted I have a lot more developer experience on Linux but I was able to recreate what I do to automate my OS on Windows with less effort than expected. &lt;/p&gt;

&lt;h3&gt;
  
  
  Installs ⚡
&lt;/h3&gt;

&lt;p&gt;Unfortunately, Windows does not have a built-in package manager by default but there is a way to achieve command-line installs. &lt;a href="https://chocolatey.org/" rel="noopener noreferrer"&gt;Chocolatey&lt;/a&gt; touts itself as “The Package Manager for Windows”.&lt;/p&gt;

&lt;p&gt;To replicate the git install from above we will run the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;choco install git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;Seems easy and it is. The biggest issue I’ve found with chocolatey is it not having everything I need. You can search the registry &lt;a href="https://chocolatey.org/search" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To turn it into a script you could put the above into a Powershell script: “installGit.ps1” and run it from the command-line like any other script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./installGit.ps1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Dotfiles 📁
&lt;/h3&gt;

&lt;p&gt;Dotfiles work the same in Windows as they do in Linux. They are user configuration files that I save to a repo and then copy to their required location to restore an app’s settings. &lt;/p&gt;

&lt;p&gt;To backup your git config on windows it’s as simple as copying C:\Users\YOUR_USERNAME.gifconfig to a backup location/repo. If you want to restore it simply copy it back to its original location 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  Aliases 👻 &amp;amp; Functions 🛠
&lt;/h3&gt;

&lt;p&gt;I found creating aliases a bit confusing at first but then I realised you can use functions that are defined in your Powershell &lt;a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-6" rel="noopener noreferrer"&gt;default profile&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s a couple of examples from mine, the first is used to install packages from chocolatey by typing “install” The second to clone a repo by typing its name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
function install() {
  choco install -y $args
}

function clone() {
  clear
  echo “Enter repo name”
  echo “-----------------“
  $repo = Read-Host -Prompt ‘|=&amp;gt;‘

  $start=$repo.substring(0, 4)

  clear

  if ($start -eq “http”) {
    git clone $repo
  } Else {
    git clone git@github.com:kensleDev/$repo
  }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the above in your Powershell profile, you can simply type the name of the function to call it e.g.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;install git

clone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Wrapping Up 🏁
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fux71ylf0t2x8vuoo27xd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fux71ylf0t2x8vuoo27xd.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love scripting away menial tasks and this was a little look into how I achieve that within my OS. I am constantly refining my scripts and finding better ways to save time and concentrate on what’s important.&lt;/p&gt;

&lt;p&gt;TLDR - An overview of how I automate the setup/maintenance of my OS/Environment via Bash/Powershell scripts.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>bash</category>
      <category>powershell</category>
    </item>
    <item>
      <title>My VSCode Setup</title>
      <dc:creator>Julian Iaquinandi</dc:creator>
      <pubDate>Fri, 18 Oct 2019 10:55:15 +0000</pubDate>
      <link>https://dev.to/juliani/my-vscode-setup-3lio</link>
      <guid>https://dev.to/juliani/my-vscode-setup-3lio</guid>
      <description>&lt;p&gt;Like most of us, my setup is ever-changing, I tend to install and uninstall plugins based on the projects that I'm doing but there are staples that get used regardless and the aim of this post is to document the settings/plugins/shortcuts that I can't go without.&lt;/p&gt;

&lt;p&gt;You can check out my full settings here: &lt;a href="https://gist.github.com/kensleDev/f9ccd81111529eaeb376769b46af6c3a"&gt;Gist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to give them a whirl then install &lt;a href="https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync"&gt;Settings Sync&lt;/a&gt; and use the above gists id&lt;/p&gt;

&lt;h2&gt;
  
  
  Keyboard Shortcuts
&lt;/h2&gt;

&lt;p&gt;I "go in" when it comes to keyboard shortcuts. I enjoy remapping programs to bend them to my will but what it really does for me is allows me to get acquainted with all the features of the tool at hand. I also have an AutoHotKey script that allows me to navigate windows via the caps lock key but I will save that for another post.&lt;/p&gt;

&lt;p&gt;After many, many iterations I've landed on the following config/system: &lt;/p&gt;

&lt;h3&gt;
  
  
  File Navigation - ALT
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Next Tab&lt;/td&gt;
&lt;td&gt;ALT + S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Previous Tab&lt;/td&gt;
&lt;td&gt;ALT + A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle Editor Pane&lt;/td&gt;
&lt;td&gt;ALT + D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full Screen Editor Pane&lt;/td&gt;
&lt;td&gt;ALT + F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Center Editor Panes&lt;/td&gt;
&lt;td&gt;ALT + C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Editor Pane&lt;/td&gt;
&lt;td&gt;ALT + Q&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expand current selection&lt;/td&gt;
&lt;td&gt;ALT + K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shrink current selection&lt;/td&gt;
&lt;td&gt;ALT + J&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Navigate Backward (cursor)&lt;/td&gt;
&lt;td&gt;ALT + L&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Navigate Foward (cursor)&lt;/td&gt;
&lt;td&gt;ALT + H&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Terminal / Output Navigation - ALT
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Focus Terminal 1&lt;/td&gt;
&lt;td&gt;ALT + W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Terminal 2&lt;/td&gt;
&lt;td&gt;ALT + E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fullscreen Terminal&lt;/td&gt;
&lt;td&gt;ALT + R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle Terminal Pages&lt;/td&gt;
&lt;td&gt;ALT + T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kill Terminal&lt;/td&gt;
&lt;td&gt;ALT + 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Terminal&lt;/td&gt;
&lt;td&gt;ALT + 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Problems Panel&lt;/td&gt;
&lt;td&gt;ALT + 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Output Panel&lt;/td&gt;
&lt;td&gt;ALT + 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Debug Console Panel&lt;/td&gt;
&lt;td&gt;ALT + 3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Macros - ALT + M
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Comment Down&lt;/td&gt;
&lt;td&gt;ALT + M, ALT + C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete Current Line&lt;/td&gt;
&lt;td&gt;ALT + M, ALT + D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go to next Error w/ suggestion&lt;/td&gt;
&lt;td&gt;ALT + M, ALT + E&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Misc
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Copy File Path&lt;/td&gt;
&lt;td&gt;CTRL + SHIFT + C, C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copy Relative File Path&lt;/td&gt;
&lt;td&gt;CTRL + SHIFT + C, V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle Sidebar&lt;/td&gt;
&lt;td&gt;CTRL + B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle Activity Bar&lt;/td&gt;
&lt;td&gt;CTRL + ALT + B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Extensions
&lt;/h3&gt;

&lt;p&gt;I love the plugin architecture that VSCode has adapted and now you can install most plugins without a reload 😍&lt;/p&gt;

&lt;p&gt;When writing this up, in fact, every time I check my plugins I uninstall a handful and come to the realisation I don't need 90% of what I've installed. So after my cleanup, there's not that much to shout about which isn't necessarily a bad thing as I'm always trying to cut down my dependencies but here are the few that I actually use daily.&lt;/p&gt;

&lt;p&gt;Framework specific tools - Dependant on the stack I'm using: &lt;a href="https://marketplace.visualstudio.com/items?itemName=johnpapa.angular-essentials"&gt;Angular Essentials&lt;/a&gt;, &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack"&gt;Azure Tools&lt;/a&gt;, &lt;a href="https://marketplace.visualstudio.com/items?itemName=octref.vetur"&gt;Vetur&lt;/a&gt;, &lt;a href="https://aws.amazon.com/visualstudiocode/"&gt;AWS Toolkit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync"&gt;Settings Sync&lt;/a&gt; - Keeps my config consistent across multiple machines with ease and syncs via a Github gist. I code across 3 machines and previous to finding this plugin did it manually&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=intodevelopment.nightlight"&gt;Nightlight&lt;/a&gt; -  This is a new addition as I found myself constantly switching themes this plugin will automatically switch themes either at a set time or when it's getting dark.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=whizkydee.material-palenight-theme"&gt;Palenight Theme&lt;/a&gt; - Day time theme&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=sdras.night-owl"&gt;Night Owl&lt;/a&gt; - Night time theme&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=geddski.macros"&gt;Macros&lt;/a&gt; - Allows you to create custom macros - Lots of potential here. Check out "Go to next Error w/ suggestion" in  keyboard shortcuts&lt;/p&gt;

&lt;h2&gt;
  
  
  Settings
&lt;/h2&gt;

&lt;p&gt;I've not included all of my settings file but I have included what I think you may be interested in, The full file can be found here: &lt;a href="https://gist.github.com/kensleDev/f9ccd81111529eaeb376769b46af6c3a"&gt;Gist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's nothing too special here but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prefer setting the sidebars to the right, that way when toggling the sidebars the leftmost editor stays in the same place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The title bar shows the file path as described here: &lt;a href="https://bit.ly/2MSb94n"&gt;https://bit.ly/2MSb94n&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Like using Fira Code for font ligatures  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Minimap disabled by default and doesn't render characters when open&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  terminal.integrated.fontSize": 12,
  "terminal.integrated.fontSize": 12,
  "editor.fontFamily": "Fira Code, Hasklig Light, Hack, Menlo, Monaco, 'Courier New', monospace",
  "editor.fontLigatures": true,
  "editor.tabSize": 2,
  "editor.fontSize": 12,
  "editor.lineHeight": 22,
  "editor.letterSpacing": 0.5,
  "editor.formatOnPaste": true,
  "editor.formatOnType": false,
  "files.trimTrailingWhitespace": true,
  "editor.cursorBlinking": "phase",
  "editor.cursorSmoothCaretAnimation": true,
  "editor.renderWhitespace": "all",
  "editor.insertSpaces": true,
  "editor.smoothScrolling": true,
  "window.zoomLevel": 0,
  "files.insertFinalNewline": true,

  "workbench.editor.enablePreviewFromQuickOpen": false,
  "explorer.openEditors.visible": 0,
  "window.title": "${dirty} ${activeEditorMedium}${separator}${rootName}",

  "editor.minimap.enabled": false,
  "editor.minimap.renderCharacters": false,
  "editor.minimap.maxColumn": 200,
  "editor.minimap.showSlider": "mouseover",

  "telemetry.enableCrashReporter": false,
  "telemetry.enableTelemetry": false,

  "workbench.settings.enableNaturalLanguageSearch": false,
  "workbench.sideBar.location": "right",

  "macros": {
    "commentDown": [
      "editor.action.copyLinesDownAction",
      "cursorUp",
      "editor.action.addCommentLine",
      "cursorDown"
    ],
    "nextErr": [
      "editor.action.marker.nextInFiles",
      "editor.action.addSelectionToNextFindMatch",
      "editor.action.triggerSuggest"
    ]
  },

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>vscode</category>
      <category>setup</category>
    </item>
  </channel>
</rss>
