Hi Ti,

I've removed the mapping that was misusing the default vim <C-R> behaviour.

I've reworked your code to the function below.

When I now do:
:call SRT_CorrectNames()
- I see my input list transformed to a joined line with \| between the words
- I see that I move to my file where I want to do substitution.
- I now get an error on the substitute
E486: pattern not found : \c\<\(<C-R>0\)\>

Any idea why pattern isn't found?

function! SRT_CorrectNames()
:sp input.txt
:%s/$/\\|/
:%j!
":s/..$
execute "normal! \<end>xx"

"0y$
        let @0 = getline(1)
        di 0

"
:wincmd w
%s/\c\<\(<C-R>0\)\>/\u&/g
"                   " substitute across the entire file (":%s/")
"                   " ignoring case ("\c")
"                   " a word must start here to match ("\<")
"                   " start the list of alternatives ("\(")
"                   " use control+R followed by zero
"                   "    to include the word-list joined by \|
"                   "    that we yanked previously
"                   " close the list of alternatives ("\)")
"                   " ensure that the word ends here ("\>")
"                   " and replace it with ("/")
"                   " the next letter uppercased ("\u")
"                   " the text we captured ("&")
"                   " and do all replacements on the line ("/g")
"
"This assumes that your input list is all just whole words, no funky
"regexp metachars (periods, backslashes, asterisks, or
"open-square-brackets come to mind).endfunction
endfunction

Rgds,
Jeri



On Wed, Apr 23, 2014 at 7:58 PM, Jeri Raye <[email protected]> wrote:

> Hi Tim,
>
> I'm trying to make a function out of your commands.
> Perhaps that that is the reason why it's not working straight away.
>
> Rgds, Jeri
>
>
> On Mon, Apr 21, 2014 at 4:42 PM, Tim Chase <[email protected]> wrote:
>
>> On 2014-04-21 08:37, Jeri Raye wrote:
>> > :s/..$
>> > doesn't work at my windows system
>> > I use:
>> > execute "normal! \<end>xx"
>>
>> This should work on all versions of vim, regardless of operating
>> system.  How are you determining that it isn't working?  Is it giving
>> you an error?  Is it not removing the last two characters (the "\|")
>> from the line?  If you are having a problem, you could tweak the
>> first couple steps to
>>
>>   :1,$-s/$/\\|/
>>
>> which will tack them onto every line *except* the last one, saving
>> you that ":s/..$/" step.
>>
>> > Then it fails on
>> > 0y$
>> >
>> > I get the error message E488: Trailing characters
>>
>> This sounds like you're trying to do this in some mode that isn't
>> normal-mode.  Perhaps command-mode?
>>
>> You could yank the entire line and then just remove the newline at
>> the end if that's easier.
>>
>> > I also noticed that the <C-R> mapping in the last substitute
>> > command is already used in another plugin.
>> > Is there a workaround for?
>>
>> You mean...other than not remapping away something that is incredibly
>> valuable?  ;-)  You can always map something else to it:
>>
>>   :cnoremap <f4> <c-r>
>>
>> -tim
>>
>>
>>
>>
>> --
>> --
>> 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 [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to