On Nov 14, 1:27 pm, Tim Chase <[email protected]> wrote: > On 11/14/2010 04:42 AM, rameo wrote: > > > I would like to do this with a map (let say CTRL-K) and cycle through > > a number of filetypes settings, p.e.: > > > 1st CTRL-K --> set filetype=vim > > 2nd CTRL-K --> set filetype=html > > 3rd CTRL-K --> set filetype=txt > > 4th CTRL-K --> set filetype= (empty) > > > I know that I need an array to do this but I do not know how to cycle > > through the array using a map. > > Not too hard. First, set up the array of various filetypes you want: > > :let types=['vim', 'html', 'txt', ''] > > Then create a mapping to update the value of 'filetype' to the > next item in the list with wraparound: > > :nnoremap <f4> :let &ft=types[(index(types, &ft) + 1) % > len(types)]<cr>:set ft?<cr> > > That uses the index() function to look up the current type. If > it exists, an index of 0 to len(types)-1 is returned. Add 1 to > that. The "% len(types)" performs modulo arithmetic so that when > you hit the end (the blank value in this case) the index+1 rolls > back to 0. > > I also include reporting of the new value to make it clearer...if > you don't want that, you can remove the trailing ":set ft?<cr>" > bit of the mapping. > > Hope this helps, > > -tim
Thank you Tim, I was trying and trying with functions but couldn't find the solution. Your solution is very easy and works fine :) -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
