<?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: Girish Venkatachalam</title>
    <description>The latest articles on DEV Community by Girish Venkatachalam (@girish1729).</description>
    <link>https://dev.to/girish1729</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%2F861029%2F40be43f7-fb5a-4870-8741-62b90df3c092.jpg</url>
      <title>DEV Community: Girish Venkatachalam</title>
      <link>https://dev.to/girish1729</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/girish1729"/>
    <language>en</language>
    <item>
      <title>A simple image gallery</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Sat, 21 Oct 2023 13:33:16 +0000</pubDate>
      <link>https://dev.to/girish1729/a-simple-image-gallery-5id</link>
      <guid>https://dev.to/girish1729/a-simple-image-gallery-5id</guid>
      <description>&lt;p&gt;I wrote a very simple image gallery with plugin support for &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Svelte&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;npm packages are live and there is live demo too.&lt;/p&gt;

&lt;p&gt;It is MIT licensed and free for commercial use of course.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/girish1729/blackgallery"&gt;Project website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>My HTTPs uploader with new features</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Sat, 21 Oct 2023 13:30:48 +0000</pubDate>
      <link>https://dev.to/girish1729/my-https-uploader-with-new-features-43lj</link>
      <guid>https://dev.to/girish1729/my-https-uploader-with-new-features-43lj</guid>
      <description>&lt;p&gt;Progress-up uploader is now newly launched with configuration features using JSON in addition to already available runtime manual setup.&lt;/p&gt;

&lt;p&gt;There is a much nicer interface and documentation has more examples. There is also a live demo in addition to the stackblitz samples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://progress-up.live"&gt;Progress-up&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Have you wanted progress display for uploads?</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Thu, 02 Mar 2023 08:13:18 +0000</pubDate>
      <link>https://dev.to/girish1729/have-you-wanted-progress-display-for-uploads-15n1</link>
      <guid>https://dev.to/girish1729/have-you-wanted-progress-display-for-uploads-15n1</guid>
      <description>&lt;h2&gt;
  
  
  Progress-up uploader
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L-gaXdrV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/KIzjtN0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L-gaXdrV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/KIzjtN0.png" alt="Dark mode" width="880" height="1469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have an ability to preview and delete the files in queue.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>A vue plugin for file upload?</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Thu, 02 Mar 2023 08:10:43 +0000</pubDate>
      <link>https://dev.to/girish1729/a-vue-plugin-for-file-upload-1enn</link>
      <guid>https://dev.to/girish1729/a-vue-plugin-for-file-upload-1enn</guid>
      <description>&lt;p&gt;Check out &lt;a href="https://progress-up.live"&gt;Progress-up&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qPZZAaHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NXyisu1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qPZZAaHh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NXyisu1.png" alt="Banned files" width="880" height="1174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔷 Multiple files sent in parallel&lt;/li&gt;
&lt;li&gt;🔷 10 progress bars to choose from&lt;/li&gt;
&lt;li&gt;🔷 4 tabs [setup, drag drop, stats, help]&lt;/li&gt;
&lt;li&gt;🔷 MIME and size filters [allow/deny, total/per file limit]&lt;/li&gt;
&lt;li&gt;🔷 Test upload feature to test backend&lt;/li&gt;
&lt;li&gt;🔷 Bare min config needed to start uploading&lt;/li&gt;
&lt;li&gt;🔷 Drag and drop&lt;/li&gt;
&lt;li&gt;🔷 Dark mode&lt;/li&gt;
&lt;li&gt;🔷 POST HTTP method&lt;/li&gt;
&lt;li&gt;🔷 Plugins for svelte, vue, react &amp;amp; angular&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Attention react devs - Want a file uploader with preview?</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Mon, 27 Feb 2023 08:39:40 +0000</pubDate>
      <link>https://dev.to/girish1729/attention-react-devs-want-a-file-uploader-with-preview-2kgp</link>
      <guid>https://dev.to/girish1729/attention-react-devs-want-a-file-uploader-with-preview-2kgp</guid>
      <description>&lt;h1&gt;
  
  
  Progress-up - the file uploader for React
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G5_rs7ca--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Vf8VE33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G5_rs7ca--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Vf8VE33.png" alt="Preview" width="880" height="1478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://progress-up.live"&gt;Download link&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Are you looking for a svelte plugin for file upload?</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Mon, 27 Feb 2023 08:21:29 +0000</pubDate>
      <link>https://dev.to/girish1729/are-you-looking-for-a-svelte-plugin-for-file-upload-1khf</link>
      <guid>https://dev.to/girish1729/are-you-looking-for-a-svelte-plugin-for-file-upload-1khf</guid>
      <description>&lt;p&gt;Check out my project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fvsp0eti0j7qmm3ak4cca.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fvsp0eti0j7qmm3ak4cca.gif" alt="Drag drop" width="720" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are plugins for each of&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;react&lt;/li&gt;
&lt;li&gt;svelte&lt;/li&gt;
&lt;li&gt;vue&lt;/li&gt;
&lt;li&gt;angular&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://progress-up.live" rel="noopener noreferrer"&gt;Project page&lt;/a&gt;&lt;/p&gt;

</description>
      <category>motivation</category>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>A file uploader for HTTP(s) to show progress</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Sun, 26 Feb 2023 11:34:11 +0000</pubDate>
      <link>https://dev.to/girish1729/a-file-uploader-for-https-to-show-progress-5cfk</link>
      <guid>https://dev.to/girish1729/a-file-uploader-for-https-to-show-progress-5cfk</guid>
      <description>&lt;h2&gt;
  
  
  An open source file uploader
&lt;/h2&gt;

&lt;p&gt;Progress-up is a HTML5 file uploader with support for file preview,&lt;br&gt;
banning files based on MIME/size and progress display.&lt;/p&gt;

&lt;p&gt;Here are some screenshots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main tab
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F85pbqnya864xdhq8lst0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F85pbqnya864xdhq8lst0.png" alt="Main tab" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dark mode
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flak1ntcqxl4rqx6q4bj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flak1ntcqxl4rqx6q4bj6.png" alt="Dark mode" width="800" height="1335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Help tab
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fmg0i6cjkf2g81qjqtuxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmg0i6cjkf2g81qjqtuxv.png" alt="Help tab" width="800" height="825"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup tab
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnsqohoyia6w2qck6eyze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnsqohoyia6w2qck6eyze.png" alt="Setup tab" width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Banned files
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4d9yj9xt76exzzhmuaw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4d9yj9xt76exzzhmuaw4.png" alt="Banned files" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features at a glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔷 Multiple files sent in parallel&lt;/li&gt;
&lt;li&gt;🔷 10 progress bars to choose from&lt;/li&gt;
&lt;li&gt;🔷 4 tabs [setup, drag drop, stats, help]&lt;/li&gt;
&lt;li&gt;🔷 MIME and size filters [allow/deny, total/per file limit]&lt;/li&gt;
&lt;li&gt;🔷 Test upload feature to test backend&lt;/li&gt;
&lt;li&gt;🔷 Bare min config needed to start uploading&lt;/li&gt;
&lt;li&gt;🔷 Drag and drop&lt;/li&gt;
&lt;li&gt;🔷 Dark mode&lt;/li&gt;
&lt;li&gt;🔷 POST HTTP method&lt;/li&gt;
&lt;li&gt;🔷 Plugins for svelte, vue, react &amp;amp; angular&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Website , github link, docs and packages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://progress-up.live" rel="noopener noreferrer"&gt;Master website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/girish1729/progress-up" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/progress-up-react" rel="noopener noreferrer"&gt;React plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/progress-up-vue" rel="noopener noreferrer"&gt;Vue plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/progress-up-svelte" rel="noopener noreferrer"&gt;Svelte plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/progress-up-angular" rel="noopener noreferrer"&gt;Angular plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showcase</category>
      <category>sideprojects</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>My open source LiveUSB OpenBSD project</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Mon, 17 Oct 2022 06:34:54 +0000</pubDate>
      <link>https://dev.to/girish1729/my-open-source-liveusb-openbsd-project-15c0</link>
      <guid>https://dev.to/girish1729/my-open-source-liveusb-openbsd-project-15c0</guid>
      <description>&lt;h2&gt;
  
  
  My LiveUSB OpenBSD project beginning
&lt;/h2&gt;

&lt;p&gt;It began around 10 or 12 years ago. Not sure when.&lt;/p&gt;

&lt;p&gt;I created a web page to share my personal invention. Something I need for my own use.&lt;/p&gt;

&lt;p&gt;Now look at the stats.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l8y1cJCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qpc0vpn9r8nu5zfsh8uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l8y1cJCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qpc0vpn9r8nu5zfsh8uy.png" alt="Image description" width="756" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there are 3 variants.&lt;/p&gt;

&lt;p&gt;-XFCE&lt;br&gt;
-Gnome&lt;br&gt;
-Minimal&lt;/p&gt;

&lt;p&gt;The download stats show each one winning a different month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9U-RsGVJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88tnfwgm2osarlddkw33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9U-RsGVJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88tnfwgm2osarlddkw33.png" alt="Image description" width="880" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are some screenshots
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uDQ4K01Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pja3gpwz07mltc0jgsmn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uDQ4K01Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pja3gpwz07mltc0jgsmn.png" alt="Image description" width="880" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Download a variant
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://liveusb-openbsd.sourceforge.io"&gt;Download a variant&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get in touch with me
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twitter.com/intent/follow?screen_name=girish1729"&gt;Twitter&lt;/a&gt; is best in case you need help.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Vim editor cookbook</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Fri, 14 Oct 2022 08:28:44 +0000</pubDate>
      <link>https://dev.to/girish1729/vim-editor-cookbook-15h6</link>
      <guid>https://dev.to/girish1729/vim-editor-cookbook-15h6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to the book
&lt;/h2&gt;

&lt;p&gt;This book was created with a sole purpose of covering a cookbook or a&lt;br&gt;
cheatsheet style recipe for powering your vim usage.&lt;/p&gt;

&lt;p&gt;A certain level of basic comfort and mastery is assumed throughout.&lt;/p&gt;

&lt;p&gt;By leveraging video this book aims to make things easy for the reader.&lt;br&gt;
Also having written in book form with plenty of text to go with the&lt;br&gt;
video the learning should be smooth and easy to grasp.&lt;/p&gt;

&lt;p&gt;Let us dive in.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to exit vim?
&lt;/h2&gt;

&lt;p&gt;Before we get started with the course, the key question I wish to answer&lt;br&gt;
is how to exit vim.&lt;/p&gt;

&lt;p&gt;Whilst doing a Google search for vim questions I found this on top of&lt;br&gt;
the list. So let us first address that.&lt;/p&gt;

&lt;p&gt;I show in the below video 3 ways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ctrl-Z which suspends the job (works only in command mode)&lt;/li&gt;
&lt;li&gt;:wq which saves and exits&lt;/li&gt;
&lt;li&gt;:q! which exits without saving.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/TnFMveF.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---cRsHl44--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/TnFMveF.gif" alt="Exiting from vim" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people struggle due to not knowing if you are in command mode or&lt;br&gt;
insert mode. That is a problem in vi.&lt;/p&gt;

&lt;p&gt;In vim however you can clearly see that at the bottom left of the&lt;br&gt;
screen.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reading text files into vim buffer
&lt;/h2&gt;

&lt;p&gt;Vim is very powerful for dealing with other files in the file system. By&lt;br&gt;
writing and reading between temporary files mostly in &lt;code&gt;/tmp&lt;/code&gt; directory&lt;br&gt;
we can easily copy paste instead of using the copy buffer supported by&lt;br&gt;
vim which uses the &lt;code&gt;v&lt;/code&gt; keystroke or the &lt;code&gt;y&lt;/code&gt; or &lt;code&gt;yy&lt;/code&gt; keys.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/jHb45vO.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qBdJeDQY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/jHb45vO.gif" alt="Reading from file" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you read contents of a file you can do various things with it. You&lt;br&gt;
can go to a particular line and insert the external file.&lt;/p&gt;

&lt;p&gt;Next we see how we can fetch output of a command into vim buffer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reading shell command output into vim
&lt;/h2&gt;

&lt;p&gt;Reading files into vim buffer is cool. But what about reading output of&lt;br&gt;
a shell command into vim?&lt;/p&gt;

&lt;p&gt;This could be used with &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;-q&lt;/code&gt; switch like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:r &lt;span class="o"&gt;!&lt;/span&gt;curl &lt;span class="nt"&gt;-q&lt;/span&gt; &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are various tricks we can use too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/BPQPfu3.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x_Nfjkk9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/BPQPfu3.gif" alt="Reading shell command output" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing a part of buffer to a file
&lt;/h2&gt;

&lt;p&gt;In this chapter we are simply exploring how vim can help you write out&lt;br&gt;
portions of the buffer to the external file.&lt;/p&gt;

&lt;p&gt;We can simply select using the &lt;code&gt;v&lt;/code&gt; key or simply use colon command for&lt;br&gt;
line ranges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/ccYqayX.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HYyPPL_O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/ccYqayX.gif" alt="Writing buffer to file" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course this means that you can write out the entire file to external&lt;br&gt;
file too.&lt;/p&gt;

&lt;p&gt;In case the file already exists, then vim will complain. You can google&lt;br&gt;
for a solution or choose a different file.&lt;/p&gt;

&lt;p&gt;(Let us keep things simple).&lt;/p&gt;
&lt;h2&gt;
  
  
  Deleting lines
&lt;/h2&gt;

&lt;p&gt;In order to delete lines the simple motion &lt;code&gt;dd&lt;/code&gt; on the line will do&lt;br&gt;
fine. Keep pressing and deleting lines one by one.&lt;/p&gt;

&lt;p&gt;The colon command with line range works too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:4,80d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;will delete lines 4 to 80 including both lines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/vkSqcir.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lE1H8nc---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/vkSqcir.gif" alt="Deleting lines" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the video we see how we can delete easily and also using the &lt;code&gt;v&lt;/code&gt;&lt;br&gt;
stroke and &lt;code&gt;x&lt;/code&gt; which helps us get rid of text as well.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;v&lt;/code&gt; will help us delete portions of lines too.&lt;/p&gt;
&lt;h2&gt;
  
  
  Search and replace
&lt;/h2&gt;

&lt;p&gt;Vim is mostly used for search replace of variable names in programming&lt;br&gt;
or in editing in which some string is to be replaced with some other&lt;br&gt;
string.&lt;/p&gt;

&lt;p&gt;Vim supports regular expressions and there are several special&lt;br&gt;
characters.&lt;/p&gt;

&lt;p&gt;So if your search string contains a &lt;code&gt;/&lt;/code&gt; or &lt;code&gt;\&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt; then these are&lt;br&gt;
regular expression characters and in order to avoid trouble I simply do&lt;br&gt;
this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:%s#&amp;lt;search&amp;gt;#&amp;lt;replace&amp;gt;#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will ensure that the special characters are not interpreted as such&lt;br&gt;
and that they are deemed as regular text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/D9PilO3.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wLsP-RTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/D9PilO3.gif" alt="Search and replace" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course search and replace also operates on regions just like any&lt;br&gt;
other vim command that operates on ranges(mostly line ranges).&lt;/p&gt;
&lt;h2&gt;
  
  
  Moving around the vim editing buffer
&lt;/h2&gt;

&lt;p&gt;In vim, moving around the buffer is pretty cool. Usually people think of&lt;br&gt;
this as voodoo.&lt;/p&gt;

&lt;p&gt;You mostly move around using the &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;l&lt;/code&gt; keys. But vim&lt;br&gt;
allows you to move around with the 4 arrow keys on your keyboard as&lt;br&gt;
well.&lt;/p&gt;

&lt;p&gt;Then a full screen forward is a &lt;code&gt;Ctrl-F&lt;/code&gt; and a full screen backward is&lt;br&gt;
&lt;code&gt;Ctrl-B&lt;/code&gt;. But you also have &lt;code&gt;Ctrl-d&lt;/code&gt; for half screen forward and so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/S792yRt.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--siizEzm7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/S792yRt.gif" alt="Small movement" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you have big movements like &lt;code&gt;gg&lt;/code&gt; to go to top end of the buffer and&lt;br&gt;
&lt;code&gt;G&lt;/code&gt; to go to the very end.&lt;/p&gt;

&lt;p&gt;You can also use &lt;code&gt;g&lt;/code&gt; as a command to operate using movement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/4qZkGTZ.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wEj5fVsd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/4qZkGTZ.gif" alt="Big movement" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you have the &lt;code&gt;Ctrl-E&lt;/code&gt; and &lt;code&gt;Ctrl-y&lt;/code&gt; to move forward and backward&lt;br&gt;
regardless of where the cursor is. That is quite useful too.&lt;/p&gt;

&lt;p&gt;Though I use less of that in my editing.&lt;/p&gt;
&lt;h2&gt;
  
  
  Tabbed operation - open each file in own tab
&lt;/h2&gt;

&lt;p&gt;Vim introduced multiple tab editing long ago around version 7.1 or so if&lt;br&gt;
I am not mistaken.&lt;/p&gt;

&lt;p&gt;Nowadays I almost always edit multiple files using the &lt;code&gt;vim -p *&lt;/code&gt;&lt;br&gt;
command line.&lt;/p&gt;

&lt;p&gt;This opens limited files in separate tabs. If there are 50 files then 50&lt;br&gt;
tabs can't be opened. In such cases you must depend on the next chapter&lt;br&gt;
to go to next files pressing &lt;code&gt;:n&lt;/code&gt; colon command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/9dfWnU7.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fPuhIp5T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/9dfWnU7.gif" alt="Open a file per tab" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Multi tab editing is pretty cool and I use it often.&lt;/p&gt;

&lt;p&gt;You can also use this to power editing once you memorize how to move&lt;br&gt;
across tabs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Tabbed operation - operate on all tabs
&lt;/h2&gt;

&lt;p&gt;You can move across tabs using keys in the next chapter.&lt;/p&gt;

&lt;p&gt;But the ability to operate on multiple tabs all at once comes in handy.&lt;/p&gt;

&lt;p&gt;You can simply prefix the operation with the&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:tabdo &amp;lt;oper&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;method.&lt;/p&gt;

&lt;p&gt;That way you can do search and replace or deleting the first few lines&lt;br&gt;
or last few lines or whatever you wish to do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/vC2N7zC.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7b4UEgve--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/vC2N7zC.gif" alt="Operate on all tabs" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nowadays all Vim releases support tabs and please do not forget to power&lt;br&gt;
your editing using tabs.&lt;/p&gt;

&lt;p&gt;I still remember the days when Vim did not have tabs, now that is passe.&lt;/p&gt;
&lt;h2&gt;
  
  
  Switching between tabs
&lt;/h2&gt;

&lt;p&gt;Switching between tabs is really easy and it has an eerie similarity to&lt;br&gt;
how you would switch panes in &lt;code&gt;tmux&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But switching tabs is easily demonstrated below.&lt;/p&gt;

&lt;p&gt;The keys to remember are &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These two are pressed in &lt;code&gt;command mode&lt;/code&gt; to switch tabs forward or&lt;br&gt;
backward.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/ccE0vVc.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--POgysDtE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/ccE0vVc.gif" alt="Switching between tabs" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tabbed editing is really nice and takes very less time to master.&lt;/p&gt;
&lt;h2&gt;
  
  
  Editing files without using tabs
&lt;/h2&gt;

&lt;p&gt;In case you prefer to edit vim without using tabs or when using cscope&lt;br&gt;
or some code referencing tool or when using &lt;code&gt;make&lt;/code&gt; you have to learn how&lt;br&gt;
to use the&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:e &lt;span class="c"&gt;#&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;or the two commands we see,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:N
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to go to next file and previous file respectively.&lt;/p&gt;

&lt;p&gt;Since the file names are given at the bottom of the buffer things are&lt;br&gt;
quite easy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/WISydCB.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9F1cNzcd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/WISydCB.gif" alt="Editing files without tabs" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Power editing - Multiple undo and redo
&lt;/h2&gt;

&lt;p&gt;Multiple undo and redo are pretty cool. But they were not a part of Vi&lt;br&gt;
editor by Bill Joy.&lt;/p&gt;

&lt;p&gt;This is what prompted Bram Moolenaar to write vim in the first place.&lt;br&gt;
But nowadays this is standard feature in all web based drawing tools,&lt;br&gt;
Google docs and so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/42jVKYn.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rGQZhnHg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/42jVKYn.gif" alt="Multiple undo/redo" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pressing &lt;code&gt;u&lt;/code&gt; will undo and &lt;code&gt;Ctrl-r&lt;/code&gt; both in command mode will redo.&lt;/p&gt;

&lt;p&gt;Your brain will go into a tizzy trying these keystrokes continuously.&lt;/p&gt;

&lt;p&gt;But remember that colon commands are not considered for this. Only&lt;br&gt;
editing keystrokes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Print source code into PDF or HTML
&lt;/h2&gt;

&lt;p&gt;As a programmer using vim for everyday coding, you rarely have a need to&lt;br&gt;
show your code to someone or to make a PDF to share with someone.&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;hardcopy&lt;/code&gt; colon command for that.&lt;/p&gt;

&lt;p&gt;Used like this,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:hardcopy &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; %.ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will make a &lt;code&gt;postscript file&lt;/code&gt; which can then be converted to PDF&lt;br&gt;
using &lt;code&gt;ps2pdf&lt;/code&gt; or something similar.&lt;/p&gt;

&lt;p&gt;And the &lt;code&gt;:TOhtml&lt;/code&gt; colon command is really amazing since the syntax&lt;br&gt;
highlighting and dark mode are preserved as is.&lt;/p&gt;

&lt;p&gt;Remember to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:se &lt;span class="nv"&gt;background&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dark
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;before printing to html.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/7ioKSAw.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KNnkOyl7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/7ioKSAw.gif" alt="PDF &amp;amp; HTML output of source" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using yank registers
&lt;/h2&gt;

&lt;p&gt;Using yank registers is part and parcel of vim editing. All the time you&lt;br&gt;
are copying text and cutting , deleting and pasting multiple times.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;:reg&lt;/code&gt; colon command lists all the copy buffers which you can use to&lt;br&gt;
retrieve some accidental edit or deletion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/4RFqbmD.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fdR7Q0rr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/4RFqbmD.gif" alt="Copy registers" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviously this changes between vim sessions. If you have multiple vim&lt;br&gt;
edits simultaneously the reg will change between them.&lt;/p&gt;

&lt;p&gt;Use file reading and writing to copy paste between them if on same&lt;br&gt;
machine.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using the v command to copy
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;v&lt;/code&gt; command is supposed to mean &lt;strong&gt;visual&lt;/strong&gt;. But it is really&lt;br&gt;
convenient to copy text and to cut also.&lt;/p&gt;

&lt;p&gt;You can copy any region of text and the highlighted view makes it so&lt;br&gt;
easy to work with Vim.&lt;/p&gt;

&lt;p&gt;Unlike the magic &lt;code&gt;dd&lt;/code&gt; and other things that do not show any visual&lt;br&gt;
feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/X8zaKEM.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xcf1vZLt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/X8zaKEM.gif" alt="Using 'v' command" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you copy you can paste with &lt;code&gt;p&lt;/code&gt; as usual.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;v&lt;/code&gt; command also makes it incredibly easy to write to external text&lt;br&gt;
files as we saw in one of the initial chapters.&lt;/p&gt;

&lt;p&gt;It also helps us operate on the selected region and do various colon&lt;br&gt;
commands.&lt;/p&gt;
&lt;h2&gt;
  
  
  Enable syntax highlighting and line numbers
&lt;/h2&gt;

&lt;p&gt;I can never work with source code or config files without syntax&lt;br&gt;
highlighting. Vim made this a great convenience and there are syntax&lt;br&gt;
files for every language, syntax and file type.&lt;/p&gt;

&lt;p&gt;I am typing this book in markdown and vim clearly shows errors due to&lt;br&gt;
syntax highlighting.&lt;/p&gt;

&lt;p&gt;If you are not using syntax highlighting for coding, you are missing&lt;br&gt;
something.&lt;/p&gt;

&lt;p&gt;I also use line numbers for the same reason. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/dxo1UTr.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sr91-RK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/dxo1UTr.gif" alt="Syntax highlight and line numbers" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coding can be intense labor and very demanding on your nerves. With&lt;br&gt;
syntax highlighting you can simplify and focus.&lt;/p&gt;

&lt;p&gt;Of course there are multiple themes for highlighting colors.&lt;/p&gt;

&lt;p&gt;You can find full list here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /usr/share/vim/vim&lt;span class="k"&gt;*&lt;/span&gt;/colors

blue.vim darkblue.vim default.vim delek.vim desert.vim elflord.vim evening.vim industry.vim koehler.vim lists morning.vim murphy.vim pablo.vim peachpuff.vim ron.vim shine.vim slate.vim tools torte.vim zellner.vim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my case &lt;code&gt;vim*&lt;/code&gt; is &lt;code&gt;vim82&lt;/code&gt;. This will change based on each version.&lt;/p&gt;

&lt;p&gt;To set a particular theme all you have to do is use the colon command,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:colorscheme industry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and you can enjoy Vim editing even more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spell checking
&lt;/h2&gt;

&lt;p&gt;Spell checking is an amazing feature of vim which I use along with&lt;br&gt;
&lt;code&gt;autocmd filetype&lt;/code&gt; to ensure that I don't have a lot of highlights shown&lt;br&gt;
in my source code text.&lt;/p&gt;

&lt;p&gt;But when you are typing e-mails in mutt or something or writing an&lt;br&gt;
article for your blog, then spell checking catches typos really well.&lt;/p&gt;

&lt;p&gt;All you have to do is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:se spell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And I normally have this in my &lt;code&gt;~/.vimrc&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;But I also have &lt;code&gt;:se textwidth=72&lt;/code&gt; for similar reasons.&lt;/p&gt;

&lt;p&gt;You don't want the text files that do not wrap at line boundaries,&lt;br&gt;
usually 72 characters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/5Pn8BY5.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VCjJAEiM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/5Pn8BY5.gif" alt="Enable spell check" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are not talking of vimrc customizations in this book. That is a&lt;br&gt;
separate topic on its own.&lt;/p&gt;

&lt;p&gt;But spelling checks are best enabled using autocmd which is also&lt;br&gt;
something I am not dwelling upon.&lt;/p&gt;

&lt;p&gt;A simple colon command can turn spell check on and off just like line&lt;br&gt;
numbers as we saw previously.&lt;/p&gt;
&lt;h2&gt;
  
  
  Indentation of source code
&lt;/h2&gt;

&lt;p&gt;Source code editing is close to impossible when indentation is not&lt;br&gt;
correct. And languages like Python will not even compile or work without&lt;br&gt;
proper indentation.&lt;/p&gt;

&lt;p&gt;In order to help  you with this, the &lt;code&gt;=&lt;/code&gt; keystroke in vim provides&lt;br&gt;
indentation for most languages.&lt;/p&gt;

&lt;p&gt;But for javascript I use &lt;code&gt;js-beautify&lt;/code&gt; and use the colon command and&lt;br&gt;
pipe it using the shell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/QOh7UMR.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7eY6s3Qx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/QOh7UMR.gif" alt="Indent source code" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For most languages however, the key strokes &lt;code&gt;gg&lt;/code&gt;, &lt;code&gt;v&lt;/code&gt;, &lt;code&gt;G&lt;/code&gt;, &lt;code&gt;=&lt;/code&gt; will&lt;br&gt;
indent the whole file.&lt;/p&gt;

&lt;p&gt;The indent keystroke only works with motion commands and not colon&lt;br&gt;
commands.&lt;/p&gt;
&lt;h2&gt;
  
  
  Joining multiple lines
&lt;/h2&gt;

&lt;p&gt;Joining multiple lines I learnt by accident.&lt;/p&gt;

&lt;p&gt;Like most vim users. We use &lt;code&gt;j&lt;/code&gt; for moving around the buffer and when&lt;br&gt;
the caps lock is on, it ends up joining lines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/Ac7jY2L.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C2uLMFA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/Ac7jY2L.gif" alt="Join adjacent lines" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But that is useful in case we want to do shell scripting or something&lt;br&gt;
which does not work with line breaks between command invocations.&lt;/p&gt;

&lt;p&gt;I also do not know if WYSIWIG editors give this functionality.&lt;/p&gt;

&lt;p&gt;This is yet another cool feature of Vim in my view.&lt;/p&gt;
&lt;h2&gt;
  
  
  Case inversion using ~
&lt;/h2&gt;

&lt;p&gt;A simple &lt;code&gt;~&lt;/code&gt; keystroke can reverse the case. Make upper case lowercase&lt;br&gt;
and vice versa.&lt;/p&gt;

&lt;p&gt;This is used with motion commands and so, using &lt;code&gt;v&lt;/code&gt; is ideal.&lt;/p&gt;

&lt;p&gt;Or you could use the &lt;code&gt;g&lt;/code&gt; command too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/g0iB8Ly.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0MSQ0DF3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/g0iB8Ly.gif" alt="Invert case using ~" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This chapter was written with a view of introducing motion commands.&lt;/p&gt;

&lt;p&gt;Most people do not use motion commands and use colon commands more&lt;br&gt;
often.&lt;/p&gt;

&lt;p&gt;But motion commands are quite fast and get your job done quicker. These&lt;br&gt;
things help you become more efficient at editing.&lt;/p&gt;

&lt;p&gt;Which is what vim is all about after all...&lt;/p&gt;
&lt;h2&gt;
  
  
  Detecting tabs and newlines
&lt;/h2&gt;

&lt;p&gt;When writing Python code we often run into various errors due to tabs&lt;br&gt;
looking no different from spaces.&lt;/p&gt;

&lt;p&gt;Or we might wonder if the line wrapped around or if there is really a&lt;br&gt;
new line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.imgur.com/ZkO1V5O.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gNOdamSL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/ZkO1V5O.gif" alt="Show tabs and newlines" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In such cases this colon command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:se list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;saves our day.&lt;/p&gt;

&lt;p&gt;Once we finish our investigation you can turn it off using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:se nolist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another useful tip is after doing a search and you want to highlight&lt;br&gt;
matching strings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:se nohlsearch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;will come in handy for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this short cookbook we went through various power tools that vim&lt;br&gt;
provides to improve our editing efficiency.&lt;/p&gt;

&lt;p&gt;Using videos and text in conjunction must have helped you gain a better&lt;br&gt;
understanding of Vim's power instead of text only tutorials or man&lt;br&gt;
pages.&lt;/p&gt;

&lt;p&gt;By the way&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vimtutor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is a powerful tutorial on its own merit but does not talk of advanced&lt;br&gt;
topics.&lt;/p&gt;

&lt;p&gt;And&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This colon command is pretty cool too.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>50 interesting Linux command lines</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Fri, 14 Oct 2022 08:19:05 +0000</pubDate>
      <link>https://dev.to/girish1729/50-interesting-linux-command-lines-1mo2</link>
      <guid>https://dev.to/girish1729/50-interesting-linux-command-lines-1mo2</guid>
      <description></description>
    </item>
    <item>
      <title>50 interesting Linux command lines</title>
      <dc:creator>Girish Venkatachalam</dc:creator>
      <pubDate>Fri, 14 Oct 2022 08:16:57 +0000</pubDate>
      <link>https://dev.to/girish1729/50-interesting-linux-command-lines-fh6</link>
      <guid>https://dev.to/girish1729/50-interesting-linux-command-lines-fh6</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Convert CRLF terminated files to just CR
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;dos2unix file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check if JSON is valid
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;json_verify &amp;lt; file.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above but prints out nicely.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;jq &amp;lt; file.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Get rid of duplicate spaces occuring together
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt; &amp;lt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Send mail from command line
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mutt &lt;span class="nt"&gt;-s&lt;/span&gt; hi foo@yahoo.com &amp;lt; /tmp/mail.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Move in bulk based on patterns
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mmv &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt; &lt;span class="s1"&gt;'#1.jpg'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Use interactive file deletion DOS style
(midnight commander DOS style UI)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Fancy list files (show dirs with /)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Show a file with line numbers
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Use cut to split fields
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;1:2:3 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;: &lt;span class="nt"&gt;-f2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Edit file in place and do search and replace
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;perl &lt;span class="nt"&gt;-pi&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/old/new/'&lt;/span&gt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above but not in place
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/old/new/'&lt;/span&gt; file.txt &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; new.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Spidermonkey (interactive js shell)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;js 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Simple video to audio conversion
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;ffmpeg &lt;span class="nt"&gt;-i&lt;/span&gt; file.mp4 song.mp3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Download youtube video to disk
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;youtube-dl https://youtu.be/XXXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above, faster
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;yt-dlp https://youtu.be/XXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Show progress bar or ETA with pipeviewer
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;file.tgz | pv | &lt;span class="nb"&gt;tar &lt;/span&gt;zxpf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Play gif animation
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mplayer file.gif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;View image
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;qiv file.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;qview file.webp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;xloadimage file.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Same as above
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;display file.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Nice PDF viewer
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mupdf file.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Fire up a web server using current dir
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;http-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Fire up web server to interpret markdown files
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;grip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Do a simple file upload to FTP or HTTP
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;curl &lt;span class="nt"&gt;-T&lt;/span&gt; file.input ftp://remote/dir/A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Do a fast download breaking file into chunks and fetch 
using multiple TCP connections
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;axel &amp;lt;URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Figure out common lines
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;comm &lt;/span&gt;file.txt file2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Compare binary files
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;diff a.bin b.bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Printout SHA256 fingerprint
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;openssl dgst sha256 &amp;lt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Same as above.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sha256sum&lt;/span&gt; &amp;lt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Always import fresh into git repo
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; .git | xargs &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Hear same song repeatedly
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mplayer favsong.mp3 &lt;span class="nt"&gt;-loop&lt;/span&gt; 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Watch video with vol boost, 0,9 for +,-
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mplayer &lt;span class="nt"&gt;-softvol&lt;/span&gt; &lt;span class="nt"&gt;-softvol-max&lt;/span&gt; 1000 file.mp4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Listen to Internet radio on command line
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mplayer &amp;lt;shoutcast url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Resize image with ImageMagick
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;convert file.png &lt;span class="nt"&gt;-resize&lt;/span&gt; 500x500! small.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Find out width and height
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;identify favicon.ico
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Tell the length of media
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;mplayer &lt;span class="nt"&gt;-identify&lt;/span&gt; &lt;span class="nt"&gt;-frames&lt;/span&gt; 0 &amp;lt;media&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Nuke everthing in mp3 after 90 seconds
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;ffmpeg  &lt;span class="nt"&gt;-i&lt;/span&gt; file.mp3 &lt;span class="nt"&gt;-to&lt;/span&gt; 90 out.mp3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Get rid of first 30 seconds.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;ffmpeg &lt;span class="nt"&gt;-i&lt;/span&gt; file.mp3 &lt;span class="nt"&gt;-ss&lt;/span&gt; 30 out.mp3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Convert a postscript file to PDF
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;ps2pdf14 file.ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create webp from png or jpg
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;cwebp file.png &lt;span class="nt"&gt;-o&lt;/span&gt; file.webp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Change image format
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;convert file.jpg file.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Copy file.txt to paste buffer
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;file.txt| xsel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Take screenshot from command line
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;import f.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Scour entire file system for files
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;locate file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Look for pattern recursively and ignore case
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-ir&lt;/span&gt; pat &lt;span class="nb"&gt;dir&lt;/span&gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Get rid of newline whilst printing
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Batch top output
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; top &lt;span class="nt"&gt;-b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Show speed of download/upload
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ifstat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
