{"id":37,"date":"2020-06-24T15:57:55","date_gmt":"2020-06-24T15:57:55","guid":{"rendered":"https:\/\/myport.ddev.site\/blog\/?p=37"},"modified":"2020-06-24T16:05:23","modified_gmt":"2020-06-24T16:05:23","slug":"top-cli-vim-commands-and-shortcuts-a-php-developer-should-know","status":"publish","type":"post","link":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/","title":{"rendered":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>VIM<\/strong> Commands<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Since the 1970\u2019s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU\/Linux distributions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vim is free and open-source and is one of the most popular code editors. It can be downloaded on&nbsp;<a href=\"https:\/\/www.vim.org\/\" rel=\"noreferrer noopener\" target=\"_blank\">Vim official site<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vi (vim) line navigation FAQ: What is the vi command to move to the end of the current line? (How do I move to the end of the current line in vim?)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Short answer: When in vi\/vim command mode, use the &#8220;$&#8221; character to move to the end of the current line.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Movement<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>h j k l<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Basic movement keys. A step up from the cursor keys simply because they are already under your fingers.&nbsp;Most useful when prefixed with a number (e.g. if you need to move down by about 10 lines, hit \u201c<strong>10j<\/strong>\u201d instead of just holding&nbsp;<strong>j<\/strong>&nbsp;until you get there).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>b w B W<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Move back by token\/forward by token\/back by word\/forward by word. &nbsp;(A token is a sequence of letters, digits, and underscores. For the capital letter variations, a word consists of anything that\u2019s not whitespace.) Faster than holding down a simple directional key.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>0&nbsp;^ $<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jump to first column\/first non-whitespace character\/end of line, like Home and End.&nbsp;Faster than moving by words if you\u2019re trying to get to the opposite end of the line.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>ctrl+u ctrl+d<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Basically Page Up and Page Down, but moves by half a screenful and doesn\u2019t lose your cursor position.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>&lt;line-number&gt;<\/em><strong>G<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jump directly to a specific line number.&nbsp;Most helpful if you also have line numbering enabled (:set number).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>H M L<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Move to the top\/middle\/bottom of the screen (i.e. High\/Middle\/Low).&nbsp;A good first step in getting approximately to where you want to go.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong># *<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Find the previous\/next occurrence of the token&nbsp;under the cursor.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>n N<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Repeat the last&nbsp;<em>find<\/em>&nbsp;command forward\/backward.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>\u201c<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(That\u2019s two back-ticks). Jump back to where you just were.&nbsp;This will jump back and forth between the same two locations if you keep pressing it.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>ctrl+o ctrl+i<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Move backward\/forward through the jump history.&nbsp;Useful if you have followed a chain of method calls and need to get back to where you were.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Editing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Vim, you spend most of your time in \u201cnormal\u201d mode, switching to \u201cinsert\u201d mode only when you need to add or change some text. This way, all edits become their own self-contained operations that can be repeated or chained with other operations. Most editing commands may optionally be preceded by a number in order to apply it more than once (e.g.&nbsp;to delete three lines, press&nbsp;<strong>3dd<\/strong>).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>i a I A<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enter insert mode (insert at cursor\/append after cursor\/insert at beginning of line\/append to end of line). Press Esc to exit insert mode and return to normal mode. &nbsp;It\u2019s rarely useful to precede one of these commands with a number, but it can come in handy.&nbsp;Need a comma-separated list of eight&nbsp;1s? Just hit \u201c<strong>8i1,<\/strong>&nbsp;&lt;esc&gt;\u201d then delete the trailing comma.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>o O<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Open new line (below the current line\/above the current line). A quick \u201c<strong>o<\/strong>&lt;esc&gt;\u201d will add a blank line below the current line, no matter where your cursor is.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>cw cW<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Correct the token(s)\/word(s) following the cursor. Basically combines delete and insert into one step.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>cc<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Correct line(s) by clearing and then entering insert mode. Starts inserting at the current indent level.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>dd<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Delete line(s). Quickly rearrange lines by deleting them, moving to the new location, and pasting with \u201c<strong>p<\/strong>\u201d.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>ct cf ci ca<\/strong><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>dt df di da<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Correct\/delete up to or including specific characters. Since there are many variations, I break it down in the section below about correcting text.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>s<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Delete character(s) at the cursor and then enter insert mode. &nbsp;<strong>cw<\/strong>&nbsp;is usually faster if you want to correct an entire word, but this is useful for correcting a fixed number of characters (e.g. \u201c<strong>5s<\/strong>\u201d will correct the next five&nbsp;characters).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>yy<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copy&nbsp;line(s). &nbsp;The \u201cy\u201d is for \u201cyank.\u201d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>yw yW<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copy&nbsp;token(s)\/word(s).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>p P<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the last thing that was deleted or copied before\/after cursor (for more advanced usage, you can precede it with a&nbsp;<em>register<\/em>&nbsp;specification, but that\u2019s a topic for another day).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>u ctrl+r<\/strong><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Undo and redo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(That\u2019s a period). Repeat the previous edit command. I use this&nbsp;<em>all the time<\/em>. Did you just add a line (e.g. using \u201c<strong>o<\/strong>\u201d or \u201c<strong>O<\/strong>\u201d) that you need to duplicate five&nbsp;more times with only slight modifications? &nbsp;Hit \u201c<strong>5.<\/strong>\u201d to repeat that operation, then make your modifications; no copy\/paste needed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Correcting Text<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In a boring text editor, you are limited to very basic operations: highlight some text, delete it, type more text.&nbsp;Vim has the ability to highlight (it\u2019s called \u201cvisual\u201d&nbsp;mode), but I rarely use it. &nbsp;It is often much faster to&nbsp;achieve the same thing using a few editing commands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I frequently need to correct some text that doesn\u2019t fall neatly onto a token or word boundary.&nbsp;Fortunately, operations like \u201c<strong>c<\/strong>\u201d (correct) and \u201c<strong>d<\/strong>\u201d (delete) have a number of operators that may be applied to them:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>t<\/strong><em>&lt;char&gt;<\/em>&nbsp;\u2013 exclusive match: continue up to (but not including) the next&nbsp;<em>&lt;char&gt;<\/em>&nbsp;on this line<\/li><li><strong>f<\/strong><em>&lt;char&gt;<\/em>&nbsp;\u2013 inclusive match: continue up to (and including) the next&nbsp;<em>&lt;char&gt;<\/em>&nbsp;on this line<\/li><li><strong>i<\/strong><em>&lt;char&gt;<\/em>&nbsp;\u2013 exclusive inner match: apply to text bounded by&nbsp;<em>&lt;char&gt;<\/em>, where&nbsp;<em>&lt;char&gt;<\/em>&nbsp;is from a limited set of characters that come in pairs, like quotes, parentheses, brackets, etc.<\/li><li><strong>a<\/strong><em>&lt;char&gt;<\/em>&nbsp;\u2013 inclusive inner match: same as above, except it includes&nbsp;<em>&lt;char&gt;<\/em>&nbsp;on both ends<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Say that I have the code below, and I want to completely replace the code inside the&nbsp;<code>map()<\/code>&nbsp;with something else:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>signal.map(count -&gt; String.format(\u201c%d cookies, ah ah ah\u201d, count));<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first thing I need to do is get my cursor&nbsp;<em>anywhere<\/em>&nbsp;inside the parentheses belonging to&nbsp;<code>map()<\/code>. The exact command I use depends on where I end up:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>If the cursor is just inside the open paren for&nbsp;<code>map()<\/code>, I could use \u201c<strong>cf)<\/strong>\u201d.&nbsp;This corrects all text up to and including the next \u201c)\u201d on this line.<\/li><li>Say the cursor is on the word \u201cformat\u201d.&nbsp;I would do \u201c<strong>ci(<\/strong>\u201d. Vim will search backward to find the first open paren, then search forward to find its match, and correct the text between (but not including) those characters.<\/li><li>Maybe my cursor was already closest to the word \u201ccookies.\u201d To break out of the inner parentheses, I would need to add a count and do \u201c<strong>2ci(<\/strong>\u201d. This is almost identical to the last example, except that the 2 is needed due to the nested parentheses.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m now in insert mode so I can carry on by entering the new text.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Other vi\/vim line related commands<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">While I&#8217;m in the&nbsp;<em>vi line<\/em>&nbsp;neighborhood, here&#8217;s a longer answer, with a list of &#8220;vi\/vim go to line&#8221; commands:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>vi command<\/th><th>description<\/th><\/tr><tr><td>0<\/td><td>move to beginning of the current line<\/td><\/tr><tr><td>$<\/td><td>move to end of line<\/td><\/tr><tr><td>H<\/td><td>move to the top of the current window (high)<\/td><\/tr><tr><td>M<\/td><td>move to the middle of the current window (middle)<\/td><\/tr><tr><td>L<\/td><td>move to the bottom line of the current window (low)<\/td><\/tr><tr><td>1G<\/td><td>move to the first line of the file<\/td><\/tr><tr><td>20G<\/td><td>move to the 20th line of the file<\/td><\/tr><tr><td>G<\/td><td>move to the last line of the file<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Just to be clear, you need to be in the vi\/vim command mode to issue these commands. Getting into command mode is typically very simple, just hit the [Esc] key and you are usually there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Move up or down multiple lines with vim<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can also use the [Up] and [Down] arrow keys to move up and down lines in the vi or vim editor. But did you know that when you&#8217;re in vi command mode, you can precede the [Up] or [Down] arrow keys with a number? For instance, if you want to move up 20 lines in the current file, you can type this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">20[UpArrow]<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>VIM Commands Since the 1970\u2019s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU\/Linux distributions. Vim is free and open-source and is one of the most popular code editors. It can be downloaded on&nbsp;Vim official site. vi (vim) line navigation FAQ: What is the vi command &hellip; <a href=\"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Top CLI VIM Commands and Shortcuts a PHP Developer Should Know<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog\" \/>\n<meta property=\"og:description\" content=\"VIM Commands Since the 1970\u2019s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU\/Linux distributions. Vim is free and open-source and is one of the most popular code editors. It can be downloaded on&nbsp;Vim official site. vi (vim) line navigation FAQ: What is the vi command &hellip; Continue reading Top CLI VIM Commands and Shortcuts a PHP Developer Should Know\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/\" \/>\n<meta property=\"og:site_name\" content=\"Hoja Mustaffa Abdul Latheef \u2013 Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-24T15:57:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-24T16:05:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/og-blog.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hoja Mustaffa Abdul Latheef\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hojaonline\" \/>\n<meta name=\"twitter:site\" content=\"@hojaonline\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hoja Mustaffa Abdul Latheef\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/\"},\"author\":{\"name\":\"Hoja Mustaffa Abdul Latheef\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"headline\":\"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know\",\"datePublished\":\"2020-06-24T15:57:55+00:00\",\"dateModified\":\"2020-06-24T16:05:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/\"},\"wordCount\":1386,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"articleSection\":[\"Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/\",\"url\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/\",\"name\":\"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#website\"},\"datePublished\":\"2020-06-24T15:57:55+00:00\",\"dateModified\":\"2020-06-24T16:05:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hoja.in\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/hoja.in\\\/blog\\\/\",\"name\":\"Hoja Mustaffa Abdul Latheef \u2013 Blog\",\"description\":\"Notes from daily work with TYPO3, PHP and AI-assisted engineering\",\"publisher\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hoja.in\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/e6fbd54c2061674d8ea3e7861d858c7b\",\"name\":\"Hoja Mustaffa Abdul Latheef\",\"logo\":{\"@id\":\"https:\\\/\\\/hoja.in\\\/blog\\\/#\\\/schema\\\/person\\\/image\\\/\"},\"description\":\"Senior TYPO3 Developer at jweiland.net, TYPO3 CMS Certified Developer. I write about TYPO3 upgrades, extension development, PHP and AI-assisted engineering with Claude Code.\",\"sameAs\":[\"https:\\\/\\\/hoja.in\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/","og_locale":"en_US","og_type":"article","og_title":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog","og_description":"VIM Commands Since the 1970\u2019s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU\/Linux distributions. Vim is free and open-source and is one of the most popular code editors. It can be downloaded on&nbsp;Vim official site. vi (vim) line navigation FAQ: What is the vi command &hellip; Continue reading Top CLI VIM Commands and Shortcuts a PHP Developer Should Know","og_url":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/","og_site_name":"Hoja Mustaffa Abdul Latheef \u2013 Blog","article_published_time":"2020-06-24T15:57:55+00:00","article_modified_time":"2020-06-24T16:05:23+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/hoja.in\/blog\/wp-content\/uploads\/2026\/10\/og-blog.jpg","type":"image\/jpeg"}],"author":"Hoja Mustaffa Abdul Latheef","twitter_card":"summary_large_image","twitter_creator":"@hojaonline","twitter_site":"@hojaonline","twitter_misc":{"Written by":"Hoja Mustaffa Abdul Latheef","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/#article","isPartOf":{"@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/"},"author":{"name":"Hoja Mustaffa Abdul Latheef","@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"headline":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know","datePublished":"2020-06-24T15:57:55+00:00","dateModified":"2020-06-24T16:05:23+00:00","mainEntityOfPage":{"@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/"},"wordCount":1386,"commentCount":0,"publisher":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"articleSection":["Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/","url":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/","name":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know - Hoja Mustaffa Abdul Latheef \u2013 Blog","isPartOf":{"@id":"https:\/\/hoja.in\/blog\/#website"},"datePublished":"2020-06-24T15:57:55+00:00","dateModified":"2020-06-24T16:05:23+00:00","breadcrumb":{"@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hoja.in\/blog\/top-cli-vim-commands-and-shortcuts-a-php-developer-should-know\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hoja.in\/blog\/"},{"@type":"ListItem","position":2,"name":"Top CLI VIM Commands and Shortcuts a PHP Developer Should Know"}]},{"@type":"WebSite","@id":"https:\/\/hoja.in\/blog\/#website","url":"https:\/\/hoja.in\/blog\/","name":"Hoja Mustaffa Abdul Latheef \u2013 Blog","description":"Notes from daily work with TYPO3, PHP and AI-assisted engineering","publisher":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hoja.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/e6fbd54c2061674d8ea3e7861d858c7b","name":"Hoja Mustaffa Abdul Latheef","logo":{"@id":"https:\/\/hoja.in\/blog\/#\/schema\/person\/image\/"},"description":"Senior TYPO3 Developer at jweiland.net, TYPO3 CMS Certified Developer. I write about TYPO3 upgrades, extension development, PHP and AI-assisted engineering with Claude Code.","sameAs":["https:\/\/hoja.in\/"]}]}},"_links":{"self":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":3,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"predecessor-version":[{"id":40,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/posts\/37\/revisions\/40"}],"wp:attachment":[{"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hoja.in\/blog\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}