> Le 29-03-2011, à 02:50:47 -0400, Benjamin R. Haskell a écrit :
>
>>>> Does those two mappings help you?
>>>>
>>>> :imap <expr> " getline('.')[col('.')-2]=~'\S' ? ' »' : '« '
>>>> :imap <expr> ' getline('.')[col('.')-2]=~'\S' ? ' »' : '« '
>>>
>>> [...]
>
>> [...]
>
> I gave it a try, and it works. But:
>
> - I need to press <"> before typing the work and <'> at the end of the
> word, not very convenient if I have to go through a file to correct it
> (in normal mode for instance).
Yes, this solution is not meant for post-processing.
> - I can not use those two keys anymore (I had to select from visual
> mode what you had written, yank it, and then paste it in order to
> write them in this message).
That's what I meant with "You might want a toggle".
E.g.:
==> ~/.vim/plugin/guillemets-toggle.vim <==
let s:mapped = 0
fun! ToggleGuillemets()
if s:mapped
iunmap "
iunmap '
else
imap <expr> " getline('.')[col('.')-2]=~'\S' ? ' »' : '« '
imap <expr> ' getline('.')[col('.')-2]=~'\S' ? ' »' : '« '
endif
let s:mapped = 1 - s:mapped
endfun
nmap <F10> :call ToggleGuillemets()<CR>
imap <F10> <C-\><C-O>:call ToggleGuillemets()<CR>
===========================================
Then <F10> toggles the mappings on or off.
> - it would be easier to place the cursor under a word (or visual
> select several words) and then hit a key to achieve my goal).
You might want something like:
nnoremap <Leader>gu "adi"hc2l«<Char-0xa0><Esc>"apa<Char-0xa0>»<Esc>
It'll work inside a quoted string. Basic idea is to yank out the text
from between two double quotes, using Vim's text objects. Then change
the quotes themselves into «(nbsp)text(nbsp)»
Fully broken down:
nnoremap <Leader>gu "adi"hc2l«<Char-0xa0><Esc>"apa<Char-0xa0>»<Esc>
nnoremap - normal mode mapping, but don't map things on the rhs
<Leader>gu - choose a key binding
"a - use register 'a'
d - delete
i" - inner quote
h - move left one char
c2l - change 2 letters
« - guillemet
<Char-0xa0> - alternate way to enter nbsp
<Esc> - exit insert mode
"a - use register 'a'
p - put text after cursor
a - append
<Char-0xa0> - another nbsp
» - closing guillemet
<Esc> - and finish
And, since email will probably ruin the vertical alignment:
nnoremap - normal mode mapping, but don't map things on the rhs
<Leader>gu - choose a key binding
"a - use register 'a'
d - delete
i" - inner quote
h - move left one char
c2l - change 2 letters
« - guillemet
<Char-0xa0> - alternate way to enter nbsp
<Esc> - exit insert mode
"a - use register 'a'
p - put text after cursor
a - append
<Char-0xa0> - another nbsp
» - closing guillemet
<Esc> - and finish
Most of those pieces should be :help-able. (e.g.:
:help h
:help d
)
> I see that Christian answered too, so I will (can not write single
> quote anymore ;-)) go through his message and come back later.
He had better :h[elp] references.
> Thanks for your reply Ben, very informative. The more I learn vim, the
> more I understand how far I am from mastering it (did not Einstein say
> something like that?)
Practice practice practice. One of the most important things is to
learn how to use the :help system. Vim's built-in :help is extremely
useful and comprehensive.
--
Best,
Ben
--
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
No comments:
Post a Comment