Hi David, Your posting of the tip dates quite a while ago.
Any idea if that would still work for vim/gvim 8.1 ? Is that added to the ~/.vim/vimrc ? Finally, is that action triggered by typing the sequence ':TagSelection' ? Thank you, Eric On Wednesday 5 May 2010 at 10:23:52 UTC-4 David Fishburn wrote: > On Tue, May 4, 2010 at 7:23 PM, discipulus <ger...@gmail.com> wrote: > ... > > It should have been {span class="sX"}discipulus{/span} > > > > I wrote this function just now: > > > > function! mytest() > > let l:current_column=col('.') > > exe 'normal b' > > let l:beginning_column=col('.') > > let l:diff = l:current_column - l:beginning_column + 1 > > " this relies on the surround plugin > > exe 'normal vs' > > endfunction > > > > What do you think and thanks for your response! > > I wrote my own function specifically to wrap XML tags around some > highlighted text. If the text is part of a line I wrap it inline. If > the text (visually selected) spans multiple lines, then I add the tags > on new lines before and after the text. > > I also allow you to add attributes and remove those when adding the > closing tag. > > " Tip #346: Tag Select/Wrapper:/*{{{*/ > " http://vim.sourceforge.net/tips/tip.php?tip_id=346 > " Author: David Fishburn > " These mappings and TagSelection function will allow you to place > " an XML tag around either the current word, or the current selected > " text. > " If the visual select is on a single line, the tag is wrapped > " around the text <this>way</this>. If the visual select extends > " over multiple lines, the tag is wrapped around the text > " <this> > " way > " </this> > " > " When you are prompted for the tag name, you can enter: > " Tag name? p class="classname" attri="bute" > " The select is wrapped with: > " <p class="classname" attri="bute"> > " Your selection > " </p> > " Notice the attributes have been stripped from the closing tag. > " > " Use nmap, not nnoremap, since we do want to use an existing mapping > nmap ,,, viw,,, > vnoremap ,,, <Esc>:call TagSelection()<CR> > > function! TagSelection() > let tag = input("Tag name (include attributes)? ") > > if strlen(tag) == 0 > return > endif > > " Save b register > let saveB = @b > " <C-R> seems to automatically reindent the line for some filetypes > " this will disable it until we have applied our changes > let saveIndent = &indentexpr > let curl = line(".") > let curc = col(".") > let &indentexpr = '' > > " If the visual selection is over multiple lines, then place the > " data between the tags on newlines: > " <tag> > " data > " </tag> > let newline = '' > if getline("'>") != getline("'<") > let newline = "\n" > let curl = line("'>") > endif > > " Strip off all but the first word in the tag for the end tag > let @b = newline . substitute( tag, '^[ \t"]*\(\<\S*\>\).*', '<\/\1>\e', > "" ) > let curc = curc + strlen(@b) > exec "normal `>a\<C-R>b" > > let @b = substitute( tag, '^[ \t"]*\(\<.*\)', '<\1>\e', "" ) . newline > let curc = curc + strlen(@b) > exec "normal `<i\<C-R>b" > > " Now format the area > exec "normal `<V'>j=" > > " Restore b register > let @b = saveB > let &indentexpr = saveIndent > > call cursor(curl, curc) > endfunction > " /*}}}*/ > > > If it is of any use to you. > > Enjoy. > Dave > > -- > 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 > -- -- 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 --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/08d6aee9-4e4c-4165-917b-38675c9f994en%40googlegroups.com.