{"id":14979,"date":"2011-05-28T10:08:35","date_gmt":"2011-05-28T08:08:35","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=14979"},"modified":"2011-05-28T10:08:35","modified_gmt":"2011-05-28T08:08:35","slug":"vim-tips-of-the-day","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2011\/05\/28\/vim-tips-of-the-day\/","title":{"rendered":"Vim tips of the day"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;m using <a href=\"http:\/\/www.vim.org\">Vim text editor<\/a> for more than decade now. \u00a0And I still can&#8217;t say I really know Vim. \u00a0I&#8217;m used to it and my fingers remember the commands. \u00a0And for those commands that I don&#8217;t remember, I&#8217;ve found some way of working around and got used to it too. \u00a0Today I came across not one, but two tips that I&#8217;m adding to my arsenal of Vim tricks.<\/p>\n<h3>Re-selecting visual block<\/h3>\n<p>Usually I only need to select the block once. \u00a0I then process it and never get back to it. \u00a0But sometimes, I need to select the same section of the text a few moments later. \u00a0Until today I was simply switching to visual selection and marking the block again. \u00a0Not too much of a problem, but it would be nice to have a shortcut for re-selecting the previous selection. \u00a0Of course, there is such a shortcut in Vim. \u00a0I just didn&#8217;t know it. \u00a0Simply type &#8216;<strong>gv<\/strong>&#8216; (without quotes) while in normal mode and your last visual selection will be selected again.<\/p>\n<h3>Increasing line limit on cross-file copying<\/h3>\n<p>There is no limit to number of lines copied between files, if all files are being edited in the same instance of Vim. \u00a0However if you copy a large selection from one file, then quit Vim, then open another file, and paste, you&#8217;ll probably see that only the first 50 lines or so were copied and the rest was lost. \u00a0Again this is not such a frequent scenario for me, and when it was happening I was simply opening both files in the same instance of Vim and copy all that I needed. \u00a0It turns out, I don&#8217;t really have to do that.<\/p>\n<p>Vim uses<em> ~\/.viminfo<\/em> file (default location) to remember things like command history, file marks, and registers between Vim instances. \u00a0There is a way to configure what and how much of what is going into this file. \u00a0If you are annoyed by any limits, you can easily raise them or totally remove them. \u00a0Have a look at &#8220;<em>:help &#8216;viminfo&#8217;<\/em>&#8221; manual page to see what is possible. \u00a0 Adding &#8220;<strong>set viminfo=&#8217;100,&lt;1000,s100<\/strong>&#8221; to <em>~\/.vimrc<\/em> file solved my problem.<\/p>\n<p>&nbsp;<\/p>\n<p>P.S.: my messy <a href=\"https:\/\/github.com\/mamchenkov\/vimfiles\">Vim configuration files are available from GitHub<\/a>, in case you wanted to take a pick at what else I have there.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;m using Vim text editor for more than decade now. \u00a0And I still can&#8217;t say I really know Vim. \u00a0I&#8217;m used to it and my fingers remember the commands. \u00a0And for those commands that I don&#8217;t remember, I&#8217;ve found some way of working around and got used to it too. \u00a0Today I came across not &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2011\/05\/28\/vim-tips-of-the-day\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Vim tips of the day<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,62],"tags":[74,3094],"keyring_services":[],"class_list":["post-14979","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-technology","tag-tips","tag-vim"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":42582,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/05\/03\/intermediate-vim\/","url_meta":{"origin":14979,"position":0},"title":"Intermediate Vim","author":"Leonid Mamchenkov","date":"May 3, 2019","format":false,"excerpt":"Intermediate Vim is a nice collection of Vim tips and tricks, which are aimed at somebody who is already familiar with Vim. (There is of course no single definition of what's advanced, intermediate or introductory, so we'll leave that argument out.) But the article is well worth the read, even\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/screenshot.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":247,"url":"https:\/\/mamchenkov.net\/wordpress\/2003\/06\/09\/vim-mug\/","url_meta":{"origin":14979,"position":1},"title":"Vim mug","author":"Leonid Mamchenkov","date":"June 9, 2003","format":false,"excerpt":"From the announcement of Vim mug: Finally you can join your favorite drink with your favorite editor: It's the Vim mug! Besides the Vim logo there are a dozens of Vim commands explained. We tried adding all the commands, but realized it's difficult to drink coffee from a bath tub.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22108,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/02\/best-of-vim-tips\/","url_meta":{"origin":14979,"position":2},"title":"Best of Vim Tips","author":"Leonid Mamchenkov","date":"July 2, 2014","format":"link","excerpt":"Best of Vim Tips - 15 Years of Vi + 8+ years of Vim and still learning.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27310,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/09\/use-vimdiff-as-git-mergetool\/","url_meta":{"origin":14979,"position":3},"title":"Use vimdiff as git mergetool","author":"Leonid Mamchenkov","date":"February 9, 2017","format":false,"excerpt":"Ruslan Osipov has a very handy tutorial on how to setup Vim text editor as git merge tool, for resolving git conflicts. Basically, run the following commands to tell git to use Vim as a merge tool (don't forget the --global flag if you want it for all your projects,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/02\/three-way-merge-with-vimdiff-500x259.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":27730,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/27\/graphical-vi-vim-cheat-sheet-and-tutorial\/","url_meta":{"origin":14979,"position":4},"title":"Graphical vi-vim Cheat Sheet and Tutorial","author":"Leonid Mamchenkov","date":"June 27, 2017","format":false,"excerpt":"Graphical vi-vim Cheat Sheet and Tutorial is yet another attempt to explain and visualize Vim commands to the editor's new users. This is a single page describing the full vi\/vim input model, the function of all keys, and all major features. You can see it as a compressed vi\/vim manual.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/06\/vi-vim-cheat-sheet-500x354.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28561,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/08\/vim-cfdo-ale-and-ripgrep\/","url_meta":{"origin":14979,"position":5},"title":"Vim, cfdo, Ale and RipGrep","author":"Leonid Mamchenkov","date":"May 8, 2018","format":false,"excerpt":"This blog post goes over several grep-like tools and their integration with Vim.\u00a0 If that's something you do often, it's worth a read.\u00a0 The tools are: Vim's built-in \":cdo\" and \":cfdo\" commands.\u00a0 Here's another blog post with a nice explanation of what these are and how to use them. Ale\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/14979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=14979"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/14979\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=14979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=14979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=14979"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=14979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}