Vim Plugins You Should Know About, Part I: surround.vim
catonmat.net
catonmat.net
<!-- Ugh. Surround is OK, but sucks for wrapping in HTML tags. If I select the line: -->
Hello!
<!-- And use stp (surround selection with <p/>) I get: -->
<p>
Hello!
</p>
<!-- Instead of -->
<p>Hello!</p>
<!-- The workaround? ^v$ which is tedious. I recommend mapping this for those times when you want to wrap the current line quickly in XML tags.
function! TagWrapper()
let a:tag = input("Tag: ")
normal `>
exe "normal a</" . a:tag . ">"
normal `<
exe "normal i<" . a:tag . ">"
endfunction
-->The plugin I wrote about wraps HTML around perfectly. Try:
ysiWt<p>
Or if you knew the tag you were going to wrap your "Hello!" in, then in insert mode you could have pressed: <CTRL+s>t<p>. :help Surround
The pattern you have there ("ysiWtp", < is unnecessary, as is >) is actually not thoroughly tested (as mentioned in the docs) and is used when not in a visual selection. In a visual selection, you use "s" followed by what you want to surround with, e.g. s"The one I am talking about does not define stp and requires < > between tags.
What does your 'stp' do?
Edit: I see what you did there. You were in visual mode!
viwstp>
turns foo
into <p>foo</p>
Edit: (30 mins later) Now I understood fully what was happening. ;)Run the given cmd/pipeline, and put it's output at the current cursor location:
:r ! <cmd>
Filter the whole buffer through the given cmd/pipeline: :%! <cmd>
Filter a visual selection through the given cmd/pipeline:
make selection (with mouse if you have :set mouse=a or gvim, or with any of the variations on 'v'), then hit '!'you will pop into a command line like this:
:'<,'>! <cmd>
'< is the beginning of the visual selection, and '> is the end.(Make sure you grab a Python 2.5/gvim--required ATM--build from the link on that page as well.)
The problem is the following: Write a line of text, select part of it using v, then press s to remove the selection and enter insert mode to start replacing it. This doesn't work anymore when surround.vim is loaded. Too bad, it sure looks great…
OR
Edit surround.vim and comment out the 's' mappings in visual mode. Like this: " if !hasmapto("<Plug>Vsurround","v")
" if exists(":xmap")
" xmap s <Plug>Vsurround
" else
" vmap s <Plug>Vsurround
" endif
" endif
" if !hasmapto("<Plug>VSurround","v")
" if exists(":xmap")
" xmap S <Plug>VSurround
" else
" vmap S <Plug>VSurround
" endif
" endif