{"id":7494,"date":"2004-05-10T04:27:46","date_gmt":"2004-05-10T02:27:46","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/2004\/05\/10\/vim-for-perl-developers\/"},"modified":"2009-10-13T21:31:36","modified_gmt":"2009-10-13T19:31:36","slug":"vim-for-perl-developers","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2004\/05\/10\/vim-for-perl-developers\/","title":{"rendered":"Vim for Perl developers"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/20040421-vim.png\" alt=\"\" \/>This is my attempt to provide a clear and simple instructions on adopting Vim text editor for programming needs. I am using Perl as the programming language in the examples, but most of this document will apply equally for any other programming language.<\/p>\n<p><ins datetime=\"2005-10-21T18:07:47+00:00\">Update:<\/ins> This post was translated into <a href=\"http:\/\/sao-paulo.pm.org\/papers\/alceu\/vim4perl\/index.html\">Portuguese<\/a> by Alceu Rodrigues de Freitas Junior.<\/p>\n<p><!--more--><\/p>\n<p><a name=\"introduction\"><\/p>\n<h2>Introduction<\/h2>\n<p><\/a><\/p>\n<p><a name=\"what_is_this_document\"><\/p>\n<h3>What is this document?<\/h3>\n<p><\/a><\/p>\n<p>This document is my attempt to provide a clear and simple instructions on adopting Vim text editor for programming needs. I am using Perl programming language as specific example, although most of this document will apply equally for any other programming language.<\/p>\n<p>Some people may argue that Vim does not need any additional configuration to cover programming needs, while others will say it will never be as good as some Integrated Development Environments (IDEs). I am not going to argue about these two points of view, but rather provide several tips on how to bring a simple text editor, as seen by some, closer to look and feel of an IDE, as needed by others.<\/p>\n<p><a name=\"who_should_read_this_document\"><\/p>\n<h3>Who should read this document?<\/h3>\n<p><\/a><\/p>\n<p>First of all, this document is for people who are already using Vim for their programming tasks. Those people who feel that there is something missing in Vim should definitely read this document. People who recently stopped using Vim due to the reason that something was not there should also read this document.<\/p>\n<p><a name=\"prerequisites\"><\/p>\n<h3>Prerequisites<\/h3>\n<p><\/a><\/p>\n<p>I assume that the reader has Vim installed on the system and is comfortable with simple text editing in Vim.<\/p>\n<p>Another assumption is that the reader has at least basic experience in configuring Vim by means of the <code>.vimrc<\/code> configuration file.<\/p>\n<p>I assume that the reader is using a UNIX\/Linux machine for Vim editing sessions. Otherwise, shell command line examples should be taken as a pseudo code for algorithm. :)<\/p>\n<p>The last but the least assumption is that the reader has access to the Internet and knows how to browse web sites and download files.<\/p>\n<p><a name=\"structure_of_the_document\"><\/p>\n<h3>Structure of the document<\/h3>\n<p><\/a><\/p>\n<p>Document is separated into two parts: &#8220;<a href=\"#basic_configuration\">Basic Configuration<\/a>&#8221; and &#8220;<a href=\"#advanced_configuration\">Advanced Configuration<\/a>&#8220;. &#8220;<a href=\"#advanced_configuration\">Advanced Configuration<\/a>&#8221;  is further split into &#8220;<a href=\"#advanced_configuration_common\">Common Configuration<\/a>&#8221; and &#8220;<a href=\"#advanced_configuration_perl\">Perl-Specific Configuration<\/a>&#8220;.<\/p>\n<p>&#8220;<a href=\"#basic_configuration\">Basic Configuration<\/a>&#8221; contains examples of simplest Vim configuration that does not even require Internet connectivity. These are usually plain Vim configuration options which are built-in.<\/p>\n<p>&#8220;<a href=\"#advanced_configuration\">Advanced Configuration<\/a>&#8221; contains examples Vim plug-in installation and configuration. You will need Internet connectivity to follow this section.<\/p>\n<p>If you use Vim for your programming tasks, but do not use Perl programming language, then &#8220;<a href=\"#advanced_configuration_common\">Common Configuration<\/a>&#8221; section is for you. Examples in &#8220;<a href=\"#advanced_configuration_perl\">Perl-Specific Configuration<\/a>&#8221; section can be used for extending Vim support for other programming languages.<\/p>\n<p><a name=\"methodology\"><\/p>\n<h3>Methodology<\/h3>\n<p><\/a><\/p>\n<p>In order to provide a guaranteed working examples, I have created a new user &#8220;codemonkey&#8221; on my fully updated RedHat Linux 7.3 home server. This user has no prior <code>.vimrc<\/code> configuration file and uses only the system-wide default file, which was not modified by me in any way. RedHat&#8217;s vim-6.1 version is installed on the server with no changes what-so-ever.<\/p>\n<p>I have created an empty <code>.vimrc<\/code> in <code>\/home\/codemonkey\/<\/code> directory, which is a home directory for the &#8220;codemonkey&#8221; user. I have also created user specific Vim directory structure as follows:<\/p>\n<pre>[codemonkey@gucho codemonkey]$ # Which version of Vim is installed?\r\n[codemonkey@gucho codemonkey]$ rpm -qa | grep -i vim\r\nvim-minimal-6.1-18.7x.2\r\nvim-common-6.1-18.7x.2\r\nvim-enhanced-6.1-18.7x.2\r\n[codemonkey@gucho codemonkey]$ # In which directory am I now?\r\n[codemonkey@gucho codemonkey]$ pwd\r\n\/home\/codemonkey\r\n[codemonkey@gucho codemonkey]$ # User-specific Vim configuration\r\n[codemonkey@gucho codemonkey]$ touch .vimrc\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/colors\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/compiler\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/doc\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/ftplugin\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/plugin\r\n[codemonkey@gucho codemonkey]$ mkdir .vim\/syntax<\/pre>\n<p>Each feature installation and\/or configuration is explained separately and can be done independently of the others. Screenshots are provided, where appropriate.<\/p>\n<p><a name=\"additional_help_resources\"><\/p>\n<h3>Additional help resources<\/h3>\n<p><\/a><\/p>\n<p>Vim has a large community with a lot of friendly and supportive members. If you are using Vim or just planning to do so, I suggest that you subscribe to Vim mailing list at <a href=\"http:\/\/www.vim.org\/community.php\">http:\/\/www.vim.org\/community.php<\/a>.<\/p>\n<p>Visit the Vim website for a collection of Tips and Plug-ins at <a href=\"http:\/\/www.vim.org\/\">http:\/\/www.vim.org\/<\/a>.<\/p>\n<p>Vim is shipped with an extensive documentation which you can find in <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/directory<\/code> (you path may vary slightly). I have put mentioned documentation files from this directory where appropriate.<\/p>\n<p><a name=\"basic_configuration\"><\/p>\n<h2>Basic Configuration<\/h2>\n<p><\/a><\/p>\n<p><a name=\"basic_configuration\"><\/p>\n<h3>Text wrapping<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040720-vim_text_wrapping.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040720-vim_text_wrapping.png\" alt=\"Text wrapping\" \/><\/a>As you code, sometimes text flows further than the width of the editor window. Some people like long lines to be wrapped (in other words, continued on the other line), while others prefer them unwrapped. You can configure Vim to behave according to your liking by adding &#8220;<code>set wrap<\/code>&#8221; or &#8220;<code>set nowrap<\/code>&#8221; to your <code>.vimrc<\/code> configuration file.<\/p>\n<p><a name=\"flexible_tabs\"><\/p>\n<h3>Flexible tabs<\/h3>\n<p><\/a><\/p>\n<p>Tabulation is one of the hottest topics in programmers discussions when it comes to style. A very nice explanation of what is the problem with tabulations and spaces can be read at <a href=\"http:\/\/www.jwz.org\/doc\/tabs-vs-spaces.html\">http:\/\/www.jwz.org\/doc\/tabs-vs-spaces.html<\/a>. I must say though, that I don&#8217;t agree with author&#8217;s position on the subject.<\/p>\n<p>The article does provide you with several options for vi\/Vim configuration to control the behavior of the tabs. I will just add\/repeat the ones I consider important.<\/p>\n<p>Add &#8220;<code>set tabstop=4<\/code>&#8221; to your <code>.vimrc<\/code> to display all occurrences of Tab character (ASCII #9) as 4 spaces. This option will not change the text, it will only change the displaying of the text.<\/p>\n<p>Add &#8220;<code>set autoindent<\/code>&#8221; to your <code>.vimrc<\/code> for Vim to automatically position the cursor with appropriate indentation level when you press Enter and want to write the next line of code. This is very useful when you are indenting your code in structures like loops and procedures.<\/p>\n<p>Vim allows you to select a block of code and change it&#8217;s indentation level (either increase or decrease the level). Control the width of the indentation level with &#8220;<code>set shiftwidth=4<\/code>&#8221; in your <code>.vimrc<\/code> configuration file.<\/p>\n<p>While you are in the command mode, Vim can complete the names of files and directories in case you want to open or save a file. In order to complete a file or a directory name you should start typing it&#8217;s name on the command prompt and then press the completion key. You can change the completion key to be almost anything you want with &#8220;<code>set wildchar=<\/code>&#8221; line in your <code>.vimrc<\/code> file.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/indent.txt<\/code>.<\/p>\n<p><a name=\"line_numbering\"><\/p>\n<h3>Line numbering<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_line_numbers.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_line_numbers.png\" alt=\"Line numbering\" \/><\/a>While Vim always displays your current position in the status line, you might also want to see all lines numbered. To do that, you will need to add &#8220;<code>set number<\/code>&#8221; to your <code>.vimrc<\/code>.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_03.txt<\/code>.<\/p>\n<p><a name=\"syntax_highlighting\"><\/p>\n<h3>Syntax highlighting<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_syntax_light_bg.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_syntax_light_bg.png\" alt=\"Highlighting for light background\" \/><\/a>The first thing any developer will notice in Vim is excellent syntax highlighting. All popular languages are supported. Syntax files for less popular are available from Vim web site. Perl is supported out of the box.<\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_syntax_dark_bg.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_syntax_dark_bg.png\" alt=\"Highlighting for dark background\" \/><\/a>Vim identifies keywords, comments, variables, strings, in-line POD and other standard parts of the program and highlights them. Vim supports two color modes: one for terminals with dark background color and another one for terminals with light background color. You can control these modes by specifying command &#8220;<code>set bg=dark<\/code>&#8221; and &#8220;<code>set bg=light<\/code>&#8221; in your <code>.vimrc<\/code>.<\/p>\n<p>If you still don&#8217;t like the appearance of the code, stay tuned until &#8220;<a href=\"#color_schemes\">Color schemes<\/a>&#8221; discussion.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/syntax.txt<\/code>.<\/p>\n<p><a name=\"text_completion\"><\/p>\n<h3>Text completion<\/h3>\n<p><\/a><\/p>\n<p>One of Vim&#8217;s features I cannot live without is text completion. When editing, press <code>Ctrl-n<\/code> \/ <code>Ctrl-p<\/code> to cycle through the current word completion suggestions. Vim generates suggest list based on the words in the current file. If you need key completion to make suggestions from other files, then Vim by default understand the <code>ctags<\/code> file. Simply run &#8220;<code>ctags *.p?<\/code>&#8221; to generate ctags for all Perl files and modules in the current directory (assuming you are using &#8220;<code>.pl<\/code>&#8221; extension for Perl scripts and &#8220;<code>.pm<\/code>&#8221; extension for Perl modules). This Vim&#8217;s feature not only saves a tonne of time on typing, but greatly decreases the error rate, especially with long variable and procedure names in the code.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_24.txt<\/code>.<\/p>\n<p><a name=\"window_splitting\"><\/p>\n<h3>Window splitting<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_window_split.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_window_split.png\" alt=\"Split windows\" \/><\/a>Sometimes I need to see two or more files simultaneously. While I can always start another Vim session in a separate terminal, it is not as comfortable at times as Vim&#8217;s window splitting feature.<\/p>\n<p>Vim supports both vertical and horizontal window splitting. To split current window horizontally execute &#8220;<code>:split<\/code>&#8221; while in the normal mode. To split current window vertically, use &#8220;<code>:vsplit<\/code>&#8221; instead. If you don&#8217;t provide any filename as argument to split\/vsplit then current filename is used. You further split resulting windows as much as you like. Use <code>Ctrl-w w<\/code> to cycle through the windows. &#8220;<code>:close<\/code>&#8221; will close the current windows. &#8220;<code>:only<\/code>&#8221; will close all windows except the current one.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_08.txt<\/code>.<\/p>\n<p><a name=\"diff_mode\"><\/p>\n<h3>Diff mode<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_diff_mode.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_diff_mode.png\" alt=\"Diff mode\" \/><\/a>Vim provides excellent facilities for checking and editing differences between two or more files. Execute &#8220;<code>vimdiff main.pl main2.pl<\/code>&#8221;  (or &#8220;<code>vim -d main.pl main2.pl<\/code>&#8220;) from the command line to see difference made to file main.pl in file main2.pl.<\/p>\n<p>Vim will show both files in vertical split window mode.  When you will scroll in one window, Vim will automatically scroll another window for you.  You can patch the individual differences using <code>do<\/code> and <code>dp<\/code> commands.  <code>do<\/code> will get the patch from the neighbor window and apply it to the current buffer, while <code>dp<\/code> will apply the difference from the current buffer to the neighbor window.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/diff.txt<\/code>.<\/p>\n<p><a name=\"text_folding\"><\/p>\n<h3>Text folding<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_folding_before.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_folding_before.png\" alt=\"Before folding\" \/><\/a><a href=\"\/wordpress\/wp-content\/20040510-vim_folding_after.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_folding_after.png\" alt=\"After folding\" \/><\/a>Yet another popular feature found in popular editors and IDEs is text folding. I think that folding is easier shown then explained.<\/p>\n<p>Vim supports six folding methods: by indent, by expression, by syntax, by changes in the text, by marker, and manual folding. It is up to you which method to use. For the sake of the example, I will show how to configure folding by marker.<\/p>\n<p>In order to tell Vim to use folding by marker add the following lines to your <code>.vimrc<\/code>:<\/p>\n<pre>\" Folding configuration\r\nset foldmethod=marker\r\n\" Edit and uncomment next line if you want non-default marker\r\n\"set foldmarker=\"{{{,}}}\"<\/pre>\n<p>If you need more information on this topic, read files <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_28.txt<\/code> and <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/fold.txt<\/code>.<\/p>\n<p><a name=\"marks\"><\/p>\n<h3>Marks<\/h3>\n<p><\/a><\/p>\n<p>One of Vim&#8217;s features that speeds up navigation is &#8211; marks. You can set a mark anywhere in the text and then quickly jump back to it. You can set several marks. You can set marks in several files and then quickly switch between them. I find myself set mark on the place I am currently working at with <code>mc<\/code> (<code>m<\/code> is for &#8220;mark&#8221;, <code>c<\/code> I use for &#8220;current&#8221;) and then quickly returning to the same place with <code>'c<\/code>.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/motion.txt<\/code>.<\/p>\n<p><a name=\"vertical_ident_display\"><\/p>\n<h3>Vertical Indent Display<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_vertical_indent.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_vertical_indent.png\" alt=\"Vertical indent\" \/><\/a>For some people indenting text horizontally is not enough. They need some kind of vertical indentation to help them see corresponding parts of the code. While I am not one of those people, I&#8217;ve seen this feature around so often that I decided to add it codemonkey&#8217;s <code>.vimrc<\/code>.<\/p>\n<p>All you need to do to have vertical indent display with pipe (&#8220;|&#8221;) character is to add the following two lines to your <code>.vimrc<\/code>.<\/p>\n<pre>\" This is for vertical indenting\r\nset list\r\nset listchars=tab:|\r\n\" NOTE the space char after last backslash.<\/pre>\n<p>&#8220;<code>:set list<\/code>&#8221; forces Vim to show hidden characters like tabulations, ends of lines, and ends of files. &#8220;<code>:set listchars=tab:| <\/code>&#8221; asks Vim to show only tab characters and use a pipe (&#8220;|&#8221;) with a space (&#8221; &#8220;) to do so, instead of usual &#8220;^I&#8221; thing that Vim likes to show.<\/p>\n<p><a name=\"advanced_configuration\"><\/p>\n<h2>Advanced Configuration<\/h2>\n<p><\/a><\/p>\n<p><a name=\"advanced_configuration_common\"><\/p>\n<h3>Common Configuration<\/h3>\n<p><\/a><\/p>\n<p><a name=\"color_schemes\"><\/p>\n<h4>Color schemes<\/h4>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_colorscheme_dante.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_colorscheme_dante.png\" alt=\"Colorscheme Dante\" \/><\/a>Let&#8217;s start simple. Vim website offers a handful of color schemes for all tastes and preferences. Finding and downloading these color schemes one by one can be a pain though. Luckily, world is not without kind people. Someone named Robert (MetaCosm) downloaded all color schemes and put them into a single archive file which he uploaded back to Vim&#8217;s web site. Let&#8217;s download it from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=625\">http:\/\/www.vim.org\/scripts\/script.php?script_id=625<\/a>.<\/p>\n<p>Save <code>colors.zip<\/code> in your <code>.vim\/<\/code> directory and <code>unzip<\/code> it. Making sure that all the files in UNIX format is also a good idea.<\/p>\n<pre>[codemonkey@gucho .vim]$ ls\r\ncolors.zip\r\n[codemonkey@gucho .vim]$ unzip colors.zip\r\nArchive:  colors.zip\r\n   creating: colors\/\r\n  inflating: colors\/adaryn.vim\r\n  inflating: colors\/adrian.vim\r\n  inflating: colors\/aqua.vim\r\n  inflating: colors\/astronaut.vim\r\n  inflating: colors\/asu1dark.vim\r\n  inflating: colors\/autumn.vim\r\n  inflating: colors\/biogoo.vim\r\n  inflating: colors\/blackdust.vim\r\n  inflating: colors\/BlackSea.vim\r\n  inflating: colors\/blue.vim\r\n  inflating: colors\/bluegreen.vim\r\n  inflating: colors\/bog.vim\r\n  inflating: colors\/borland.vim\r\n  inflating: colors\/breeze.vim\r\n  inflating: colors\/brookstream.vim\r\n  inflating: colors\/brown.vim\r\n  inflating: colors\/bw.vim\r\n  inflating: colors\/c.vim\r\n  inflating: colors\/camo.vim\r\n  inflating: colors\/candy.vim\r\n  inflating: colors\/caramel.vim\r\n  inflating: colors\/ChocolateLiquor.vim\r\n  inflating: colors\/coffee.vim\r\n  inflating: colors\/colorer.vim\r\n  inflating: colors\/colorscheme_template.vim\r\n  inflating: colors\/cool.vim\r\n  inflating: colors\/dante.vim\r\n  inflating: colors\/darkblue.vim\r\n  inflating: colors\/darkdot.vim\r\n  inflating: colors\/darkocean.vim\r\n  inflating: colors\/darkslategray.vim\r\n  inflating: colors\/dawn.vim\r\n  inflating: colors\/default.vim\r\n  inflating: colors\/denim.vim\r\n  inflating: colors\/desert.vim\r\n  inflating: colors\/elflord.vim\r\n  inflating: colors\/emacs.vim\r\n  inflating: colors\/evening.vim\r\n  inflating: colors\/fine_blue.vim\r\n  inflating: colors\/fnaqevan.vim\r\n  inflating: colors\/fog.vim\r\n  inflating: colors\/golden.vim\r\n  inflating: colors\/ibmedit.vim\r\n  inflating: colors\/ironman.vim\r\n  inflating: colors\/koehler.vim\r\n  inflating: colors\/lanzarotta.vim\r\n  inflating: colors\/lilac.vim\r\n  inflating: colors\/manxome.vim\r\n  inflating: colors\/midnight.vim\r\n  inflating: colors\/midnight2.vim\r\n  inflating: colors\/morning.vim\r\n  inflating: colors\/murphy.vim\r\n  inflating: colors\/navajo-night.vim\r\n  inflating: colors\/navajo.vim\r\n  inflating: colors\/night.vim\r\n  inflating: colors\/nightshimmer-theme.vim\r\n  inflating: colors\/nightwish.vim\r\n  inflating: colors\/northsky.vim\r\n  inflating: colors\/oceanblack.vim\r\n  inflating: colors\/oceandeep.vim\r\n  inflating: colors\/pablo.vim\r\n  inflating: colors\/PapayaWhip.vim\r\n  inflating: colors\/peachpuff.vim\r\n  inflating: colors\/potts.vim\r\n  inflating: colors\/print_bw.vim\r\n  inflating: colors\/rainbow_autumn.vim\r\n  inflating: colors\/rainbow_breeze.vim\r\n  inflating: colors\/rainbow_fine_blue.vim\r\n  inflating: colors\/rainbow_fruit.vim\r\n  inflating: colors\/rainbow_neon.vim\r\n  inflating: colors\/rainbow_night.vim\r\n  inflating: colors\/rainbow_sea.vim\r\n  inflating: colors\/redblack.vim\r\n  inflating: colors\/ron.vim\r\n  inflating: colors\/sand.vim\r\n  inflating: colors\/scite.vim\r\n  inflating: colors\/sean.vim\r\n  inflating: colors\/seashell.vim\r\n  inflating: colors\/shine.vim\r\n  inflating: colors\/taqua.vim\r\n  inflating: colors\/tomatosoup.vim\r\n  inflating: colors\/toothpik.vim\r\n  inflating: colors\/torte.vim\r\n  inflating: colors\/transparent.vim\r\n  inflating: colors\/whitedust.vim\r\n  inflating: colors\/wintersday.vim\r\n  inflating: colors\/xemacs.vim\r\n  inflating: colors\/xian.vim\r\n  inflating: colors\/zellner.vim\r\n  inflating: colors\/zenburn.vim\r\n[codemonkey@gucho .vim]$ dos2unix colors\/*\r\ndos2unix: converting file colors\/BlackSea.vim to UNIX format ...\r\ndos2unix: converting file colors\/ChocolateLiquor.vim to UNIX format ...\r\ndos2unix: converting file colors\/PapayaWhip.vim to UNIX format ...\r\ndos2unix: converting file colors\/adaryn.vim to UNIX format ...\r\ndos2unix: converting file colors\/adrian.vim to UNIX format ...\r\ndos2unix: converting file colors\/aqua.vim to UNIX format ...\r\ndos2unix: converting file colors\/astronaut.vim to UNIX format ...\r\ndos2unix: converting file colors\/asu1dark.vim to UNIX format ...\r\ndos2unix: converting file colors\/autumn.vim to UNIX format ...\r\ndos2unix: converting file colors\/biogoo.vim to UNIX format ...\r\ndos2unix: converting file colors\/blackdust.vim to UNIX format ...\r\ndos2unix: converting file colors\/blue.vim to UNIX format ...\r\ndos2unix: converting file colors\/bluegreen.vim to UNIX format ...\r\ndos2unix: converting file colors\/bog.vim to UNIX format ...\r\ndos2unix: converting file colors\/borland.vim to UNIX format ...\r\ndos2unix: converting file colors\/breeze.vim to UNIX format ...\r\ndos2unix: converting file colors\/brookstream.vim to UNIX format ...\r\ndos2unix: converting file colors\/brown.vim to UNIX format ...\r\ndos2unix: converting file colors\/bw.vim to UNIX format ...\r\ndos2unix: converting file colors\/c.vim to UNIX format ...\r\ndos2unix: converting file colors\/camo.vim to UNIX format ...\r\ndos2unix: converting file colors\/candy.vim to UNIX format ...\r\ndos2unix: converting file colors\/caramel.vim to UNIX format ...\r\ndos2unix: converting file colors\/coffee.vim to UNIX format ...\r\ndos2unix: converting file colors\/colorer.vim to UNIX format ...\r\ndos2unix: converting file colors\/colorscheme_template.vim to UNIX format ...\r\ndos2unix: converting file colors\/cool.vim to UNIX format ...\r\ndos2unix: converting file colors\/dante.vim to UNIX format ...\r\ndos2unix: converting file colors\/darkblue.vim to UNIX format ...\r\ndos2unix: converting file colors\/darkdot.vim to UNIX format ...\r\ndos2unix: converting file colors\/darkocean.vim to UNIX format ...\r\ndos2unix: converting file colors\/darkslategray.vim to UNIX format ...\r\ndos2unix: converting file colors\/dawn.vim to UNIX format ...\r\ndos2unix: converting file colors\/default.vim to UNIX format ...\r\ndos2unix: converting file colors\/denim.vim to UNIX format ...\r\ndos2unix: converting file colors\/desert.vim to UNIX format ...\r\ndos2unix: converting file colors\/elflord.vim to UNIX format ...\r\ndos2unix: converting file colors\/emacs.vim to UNIX format ...\r\ndos2unix: converting file colors\/evening.vim to UNIX format ...\r\ndos2unix: converting file colors\/fine_blue.vim to UNIX format ...\r\ndos2unix: converting file colors\/fnaqevan.vim to UNIX format ...\r\ndos2unix: converting file colors\/fog.vim to UNIX format ...\r\ndos2unix: converting file colors\/golden.vim to UNIX format ...\r\ndos2unix: converting file colors\/ibmedit.vim to UNIX format ...\r\ndos2unix: converting file colors\/ironman.vim to UNIX format ...\r\ndos2unix: converting file colors\/koehler.vim to UNIX format ...\r\ndos2unix: converting file colors\/lanzarotta.vim to UNIX format ...\r\ndos2unix: converting file colors\/lilac.vim to UNIX format ...\r\ndos2unix: converting file colors\/manxome.vim to UNIX format ...\r\ndos2unix: converting file colors\/midnight.vim to UNIX format ...\r\ndos2unix: converting file colors\/midnight2.vim to UNIX format ...\r\ndos2unix: converting file colors\/morning.vim to UNIX format ...\r\ndos2unix: converting file colors\/murphy.vim to UNIX format ...\r\ndos2unix: converting file colors\/navajo-night.vim to UNIX format ...\r\ndos2unix: converting file colors\/navajo.vim to UNIX format ...\r\ndos2unix: converting file colors\/night.vim to UNIX format ...\r\ndos2unix: converting file colors\/nightshimmer-theme.vim to UNIX format ...\r\ndos2unix: converting file colors\/nightwish.vim to UNIX format ...\r\ndos2unix: converting file colors\/northsky.vim to UNIX format ...\r\ndos2unix: converting file colors\/oceanblack.vim to UNIX format ...\r\ndos2unix: converting file colors\/oceandeep.vim to UNIX format ...\r\ndos2unix: converting file colors\/pablo.vim to UNIX format ...\r\ndos2unix: converting file colors\/peachpuff.vim to UNIX format ...\r\ndos2unix: converting file colors\/potts.vim to UNIX format ...\r\ndos2unix: converting file colors\/print_bw.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_autumn.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_breeze.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_fine_blue.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_fruit.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_neon.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_night.vim to UNIX format ...\r\ndos2unix: converting file colors\/rainbow_sea.vim to UNIX format ...\r\ndos2unix: converting file colors\/redblack.vim to UNIX format ...\r\ndos2unix: converting file colors\/ron.vim to UNIX format ...\r\ndos2unix: converting file colors\/sand.vim to UNIX format ...\r\ndos2unix: converting file colors\/scite.vim to UNIX format ...\r\ndos2unix: converting file colors\/sean.vim to UNIX format ...\r\ndos2unix: converting file colors\/seashell.vim to UNIX format ...\r\ndos2unix: converting file colors\/shine.vim to UNIX format ...\r\ndos2unix: converting file colors\/taqua.vim to UNIX format ...\r\ndos2unix: converting file colors\/tomatosoup.vim to UNIX format ...\r\ndos2unix: converting file colors\/toothpik.vim to UNIX format ...\r\ndos2unix: converting file colors\/torte.vim to UNIX format ...\r\ndos2unix: converting file colors\/transparent.vim to UNIX format ...\r\ndos2unix: converting file colors\/whitedust.vim to UNIX format ...\r\ndos2unix: converting file colors\/wintersday.vim to UNIX format ...\r\ndos2unix: converting file colors\/xemacs.vim to UNIX format ...\r\ndos2unix: converting file colors\/xian.vim to UNIX format ...\r\ndos2unix: converting file colors\/zellner.vim to UNIX format ...\r\ndos2unix: converting file colors\/zenburn.vim to UNIX format ...\r\n[codemonkey@gucho .vim]$<\/pre>\n<blockquote>\n<h3>vim and gvim color schemes<\/h3>\n<p>You will most likely notice that some color schemes do not change much colors in your console <code>vim<\/code>. That is because they are most probably designed for GUI version of Vim, called <code>gvim<\/code>.<\/p>\n<p>Try executing &#8220;<code>gvim +'colorscheme peachpuff' main.pl<\/code>&#8221; to see how gvim looks with selected color scheme.<\/p><\/blockquote>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_colorscheme_nightwish.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_colorscheme_nightwish.png\" alt=\"Colorscheme Nightwish\" \/><\/a>Now you can try all those color schemes one by one with &#8220;<code>:colorscheme something<\/code>&#8221;  and choose the one you like best. When you are done choosing, add line &#8220;<code>colorscheme something<\/code>&#8221; to your <code>.vimrc<\/code>.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_06.txt<\/code>.<\/p>\n<p><a name=\"block_commenting\"><\/p>\n<h3>Block commenting<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_blockcomment.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_blockcomment.png\" alt=\"Block comments\" \/><\/a>It is an often need to comment or uncomment blocks of code during the development cycle. While there is a way to do it in Vim without any additional configuration, I try to make life as easy as possible and install the BlockComment plug-in by Chris Russell.<\/p>\n<p>Let&#8217;s download BlockComment.vim from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=473\">http:\/\/www.vim.org\/scripts\/script.php?script_id=473<\/a> and copy it into <code>.vim\/plugin\/<\/code> directory. This plug-in automatically provides us with two mappings: &#8220;<code>.c<\/code>&#8221; for commenting code and &#8220;<code>.C<\/code>&#8221; for uncommenting code back.<\/p>\n<p><a name=\"file_and_buffer_browser\"><\/p>\n<h3>File and buffer browser<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_winmanager.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_winmanager.png\" alt=\"Winmanager\" \/><\/a>Vim supports editing of several files simultaneously. One can start Vim as &#8220;<code>vim main.pl main2.pl<\/code>&#8221; and then use &#8220;<code>:next<\/code>&#8221; and &#8220;<code>:previous<\/code>&#8221; to navigate through open files (called &#8220;buffers&#8221;). It is also possible to open files for editing without quiting Vim every time. For that, one should use simple &#8220;<code>:e main2.pl<\/code>&#8221; command, where main2.pl is the name of needed file.<\/p>\n<p>There are, as usual, better (more convenient) ways to work with files and buffers. Vim website lists few plug-ins which can handle only files, or only buffers, or both at the same time. One of those plug-ins is winmanager by Srinath Avadhanula. Let&#8217;s grab winmanager from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=95\">http:\/\/www.vim.org\/scripts\/script.php?script_id=95<\/a>.<\/p>\n<p>Vim&#8217;s winmanager plug-in can make use of bufexplorer plug-in by jeff lanzarotta availalbe from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=42\">http:\/\/www.vim.org\/scripts\/script.php?script_id=42<\/a>.<\/p>\n<p>Installation is as usual &#8211; saving, unziping, and dos2unixing. Since we don&#8217;t want to always have file\/directory browser turned on, lets add a mapping line to our <code>.vimrc<\/code> to &#8220;<code>:WMToggle<\/code>&#8221; by <code>F2<\/code>.<\/p>\n<pre>\" This is for winmanager\r\nmap &lt;F2&gt; :WMToggle&lt;CR&gt;<\/pre>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_23.txt<\/code>.<\/p>\n<p><a name=\"tag_explorer\"><\/p>\n<h2>Tag explorer<\/h2>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_taglist.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_taglist.png\" alt=\"Tag explorer\" \/><\/a>If you ask me, I am almost happy. The last thing that I am missing is something that will ease up my code browsing. I need a fast way of switching between different parts of my code and hierarchical view of it. Once again I go fishing to Vim web site and get myself a nice looking taglist plug-in by Yegappan Lakshmanan from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=273\">http:\/\/www.vim.org\/scripts\/script.php?script_id=273<\/a>. This one is not even an archive! You just need to copy it into your <code>.vim\/plug-in<\/code> directory. Let&#8217;s map &#8220;<code>:Tlist<\/code>&#8221; command to <code>F3<\/code> key.<\/p>\n<pre>\" This is for taglist\r\nmap &lt;F3&gt; :Tlist&lt;CR&gt;<\/pre>\n<p>One annoying thing that I find about taglist is that it resizes the terminal window when possible. I prefer to switch this feature off by add modifying my <code>.vimrc<\/code> in the following way.<\/p>\n<pre>\" This is for taglist\r\nlet Tlist_Inc_Winwidth = 0\r\nmap &lt;F3&gt; :Tlist&lt;CR&gt;<\/pre>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/tagsrch.txt<\/code>.<\/p>\n<p><a name=\"advanced_configuration_perl\"><\/p>\n<h2>Perl-Specific Configuration<\/h2>\n<p><\/a><\/p>\n<p><a name=\"embperl_syntax_highlighting\"><\/p>\n<h3>Embperl syntax highlighting<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_syntax_embperl.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_syntax_embperl.png\" alt=\"Highlighting Embperl\" \/><\/a>If you use Embperl perl module for developing dynamic content websites, then you will need to download Embperl syntax highlighting plug-in developed by Lukas Zapletal. These steps are similar for setting up highlighting for any other programming language that you might use and which is not supported out of the box.<\/p>\n<p>Embperl syntax highlighting plug-in is located at <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=61\">http:\/\/www.vim.org\/scripts\/script.php?script_id=61<\/a>. Download it and unzip it in your <code>.vim\/<\/code> directory. Again, passing all new files through dos2unix is a good idea, if you are on a UNIX\/Linux box as I am. <code>vimrc_example<\/code> shipped with the archive contains the example of configuration that you&#8217;ll need to put into your <code>.vimrc<\/code>.<\/p>\n<pre>[codemonkey@gucho .vim]$ ls\r\ncolors  colors.zip  Embperl_Syntax.zip\r\n[codemonkey@gucho .vim]$ unzip Embperl_Syntax.zip\r\nArchive:  Embperl_Syntax.zip\r\n  inflating: colors\/embperl_yellow.vim\r\n   creating: syntax\/\r\n  inflating: syntax\/embperl.vim\r\n  inflating: vimrc_example\r\n[codemonkey@gucho .vim]$ cat vimrc_example\r\n\"let perl_fold=1\r\naugroup filetypedetect\r\nautocmd! BufNewFile,BufRead *.epl,*.phtml setf embperl\r\naugroup END\r\nautocmd BufNewFile,BufRead *.epl,*.phtml colorscheme embperl_yellow<\/pre>\n<blockquote>\n<h3>Embperl color scheme<\/h3>\n<p>Embperl syntax highlighting plug-in uses it&#8217;s own color scheme, so don&#8217;t worry if you see colors different from the ones that you have expected.<\/p><\/blockquote>\n<p><a name=\"perl_syntax_compiler\"><\/p>\n<h3>Perl syntax compiler<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_perl_compiler.png\"><img decoding=\"async\" class=\"alignright\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_perl_compiler.png\" alt=\"Perl syntax compiler\" \/><\/a> Most of Integrated Development Environments (IDE) try to simplify write-compile-debug cycle. One of the things which can make the cycle easier is automatic cursor positioning to the place in the code where error occurred. Vim can do this for almost any language and compiler. If you know the format that your compiler spits out, then you can configure Vim to parse those errors and position the cursor for you. Since I am not the first Perl developer who uses Vim, I assumed that someone already wrote the compiler error syntax parser (sounds horrifying, isn&#8217;t it?).<\/p>\n<p>Let&#8217;s once again download it from Vim web site &#8211; <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=56\">http:\/\/www.vim.org\/scripts\/script.php?script_id=56<\/a>. Installation instructions are simple: just copy <code>perl.vim<\/code> (developed by Lukas Zapletal) into your <code>.vim\/compiler\/<\/code> directory. Now we need to specify for which files we want Vim to use our new perl compiler scripts. This is easily done by adding the following lines to <code>.vimrc<\/code>.<\/p>\n<pre>\" Use perl compiler for all *.pl and *.pm files.\r\nautocmd BufNewFile,BufRead *.p? compiler perl<\/pre>\n<p>Now you can use &#8220;<code>:make<\/code>&#8221; to check your code for errors. If you do have problems in your code, then Vim will position the cursor on the line with the first problem. You can use &#8220;<code>:cnext<\/code>&#8221; and &#8220;<code>:cprevious<\/code>&#8221; to go through other error messages. &#8220;<code>:clist<\/code>&#8221; will show a list of all errors.<\/p>\n<p>If you need more information on this topic, read file <code>\/usr\/share\/doc\/vim-common-6.1\/docs\/usr_30.txt<\/code>.<\/p>\n<p><a name=\"perldoc_integration\"><\/p>\n<h3>Perldoc integration<\/h3>\n<p><\/a><\/p>\n<p><a href=\"\/wordpress\/wp-content\/20040510-vim_perldoc.png\"><img decoding=\"async\" class=\"alignleft\" src=\"\/wordpress\/wp-content\/thumb-20040510-vim_perldoc.png\" alt=\"Perldoc integration\" \/><\/a>Yet another feature provided in most IDEs is on-line documentation. Vim helps developers even with that. By default, Vim comes with system manual support on all UNIX boxes. This comes very handy when you use system commands in your scripts and need to check command line parameters. Just position the cursor on the word that you are interested in and press <code>K<\/code>. Vim will execute &#8220;<code>man word<\/code>&#8220;, where &#8220;word&#8221; is the word under the cursor. This is helpful but not as much as we need it.<\/p>\n<p>Let&#8217;s visit Vim site again and download Perldoc plug-in (developed by Colin Keith) from <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=209\">http:\/\/www.vim.org\/scripts\/script.php?script_id=209<\/a>. <code>unzip perldoc.zip<\/code> and run all extracted files through <code>dos2unix<\/code>. It&#8217;s a good idea to add a <code>F1<\/code> mapping to &#8220;<code>:Perldoc<\/code>&#8221; in your <code>.vimrc<\/code>.<\/p>\n<pre>\" This is for perldoc.vim\r\nautocmd BufNewFile,BufRead *.p? map &lt;F1&gt; :Perldoc&lt;cword&gt;&lt;CR&gt;\r\nautocmd BufNewFile,BufRead *.p? setf perl\r\nautocmd BufNewFile,BufRead *.p? let g:perldoc_program='\/usr\/bin\/perldoc'\r\nautocmd BufNewFile,BufRead *.p? source \/home\/codemonkey\/.vim\/ftplugin\/perl_doc.vim<\/pre>\n<p>If you are using a newer version then I do, then you skip the last line.<\/p>\n<p>Now, whenever you hit <code>F1<\/code> while in the perl file, &#8220;<code>:Perldoc<\/code>&#8221; will get executed for the word that you have under the cursor, your current window will split horizontally and you&#8217;ll see appropriate perldoc page.<\/p>\n<p>After installation of this plug-in I have noticed that syntax highlighting in few of my programs broke. After a quick look, I understood that that happened because of my extensive usage of underscore (&#8220;_&#8221;) character in procedure names. I had to fix it by simply adding underscore (&#8220;_&#8221;) character to the list of keyword characters on line 14 in file <code>.vim\/ftplugin\/perl_doc.vim<\/code>.<\/p>\n<pre>\" Adds \/ and . as used in requires.\r\n\" setlocal iskeyword=a-z,A-Z,48-57,:,\/,.\r\n\" Adds \/ and . as used in requires. Also adds _ as used in procedure names.\r\nsetlocal iskeyword=a-z,A-Z,48-57,:,\/,.,_<\/pre>\n<p><a name=\"conclusion\"><\/p>\n<h2>Conclusion<\/h2>\n<p><\/a><\/p>\n<p>As can easily be seen above, Vim is a powerful and flexible text editor with a lot of features that can be easily added to the default distribution. Vim website contains much more plug-ins than I have demonstrated. Some of those plug-ins provided alternative solutions for the needs showed in this document.<\/p>\n<p>If you will ever again feel that something is missing while using Vim, or if you would just think that there might be an easier and\/or faster way to do so, then browse through Tips and Scripts on Vim web site and ask for help in the mailing list.<\/p>\n<p><strong>:wq<\/strong><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>This is my attempt to provide a clear and simple instructions on adopting Vim text editor for programming needs. I am using Perl as the programming language in the examples, but most of this document will apply equally for any other programming language. Update: This post was translated into Portuguese by Alceu Rodrigues de Freitas &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2004\/05\/10\/vim-for-perl-developers\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Vim for Perl developers<\/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,18,62],"tags":[36,3094],"keyring_services":[],"class_list":["post-7494","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","tag-perl","tag-vim"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":7552,"url":"https:\/\/mamchenkov.net\/wordpress\/2004\/06\/06\/how-can-i-configure-vim-for-perl-programming\/","url_meta":{"origin":7494,"position":0},"title":"How can I configure Vim for Perl programming?","author":"Leonid Mamchenkov","date":"June 6, 2004","format":false,"excerpt":"\"vim embperl\" \"vim for programming\" \"perl indent vim\" \"vim ide\" \"vimrc syntax pl tab\" \"autocmd perl vim\" \".vimrc color perl\" I have put most of my knowledge on this matter into something I call \"Vim for Perl developers\". Read it - it has all the answers for you. :)","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":8974,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/05\/16\/new-procedures-for-2005-readers-choice-awards\/","url_meta":{"origin":7494,"position":1},"title":"New Procedures for 2005 Readers&#8217; Choice Awards","author":"Leonid Mamchenkov","date":"May 16, 2005","format":false,"excerpt":"Linux Journal has changed the procedures for its Readers' Choice Awards contest. From now on, if you want to participate, you'll have to send them a specially formatted email message, instead of using a web form. They have published the instructions here. I've already sent the email to awards@linuxjournal.com with\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":9491,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/09\/24\/new-color-scheme-for-vim\/","url_meta":{"origin":7494,"position":2},"title":"New color  scheme for Vim","author":"Leonid Mamchenkov","date":"September 24, 2005","format":false,"excerpt":"I've been using dante color scheme for Vim for as long as I can remember. It's a nice one and suits me perfectly. Sometime though I feel that need for a change and than I have to go through a rather painful process of getting something new. This time I\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":27650,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/30\/a-practical-guide-to-linux-commands-editors-and-shell-programming\/","url_meta":{"origin":7494,"position":3},"title":"A Practical Guide to Linux Commands, Editors, and Shell Programming","author":"Leonid Mamchenkov","date":"May 30, 2017","format":false,"excerpt":"I came across the second edition of the Prentice Hall's \"A Practical Guide to Linux Commands, Editors, and Shell Programming\" by\u00a0Mark G. Sobell (original link). \u00a0This is a rather lengthy book at just over 1,000 pages, covering everything from history of Linux and basic commands, all the way to bash,\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":24612,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/rank-of-top-languages-on-github-com-over-time\/","url_meta":{"origin":7494,"position":4},"title":"Rank of top languages on GitHub.com over time","author":"Leonid Mamchenkov","date":"August 20, 2015","format":false,"excerpt":"GitHub blog shares some trends in regards to programming languages, which includes both public and private repositories: Interesting. \u00a0I haven't seen many Java and C# projects myself, but I'm in a very different bubble. \u00a0PHP stays on #4 for years. \u00a0VimL, the language in which most plugins for Vim editor\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"GitHub programming languages","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/GitHub-programming-languages-500x288.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28376,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/02\/11\/zeal-vim-offline-cakephp-and-other-documentation\/","url_meta":{"origin":7494,"position":5},"title":"Zeal + Vim = offline CakePHP (and other) documentation","author":"Leonid Mamchenkov","date":"February 11, 2018","format":false,"excerpt":"As any long time Vim user, I'm constantly looking for ways to tweak and improve my text editor configuration, and make me even more efficient.\u00a0 Today, I came across a very handy addition - Zeal\u00a0- an offline documentation browser for developers. (Thanks to this blog post, which also mentions Dash\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\/2018\/02\/Zeal-CakePHP-Inflector-500x265.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/7494","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=7494"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/7494\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=7494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=7494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=7494"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=7494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}