Re: Replacing '%' in a text file

2006-10-10 Thread Muhammad Farooq-i-Azam


--- Tim Chase [EMAIL PROTECTED] wrote:

  I have to replace every occurrence of % in a file
 with
  % |. I have been effectively replacing text using
 the
  following construct:
  
  :%s/\text\/replacement/g
  
  However when I try to do the following:
  
  :%s/\%\/% |/g 
  
  I am greeted by an error message. Obviously, the %
  character needs to be treated differently for
 being
  replaced. Escap sequence? 
 
 The error message returned should give a clue
 regarding the 
 problem (E486: Pattern not found: \%\).  Your
 pattern 
 \text\ works well for words, ensuring that you
 don't find 
 them as a sub-portion of some other word (such as
 finding the 
 foo in food, snafoo, or confoosion). 
 However, the \ 
 and \ tokens require a transition from a
 non-word-character to 
 a word-character (or vice-versa).  The %
 character, by default, 
 is not a key-word character (though this can be
 altered by 
 changing the 'iskeyword' setting).
 
 Unless there is some context in which you *don't*
 want to replace 
 a % with % |, you can just use
 
   :%s/%/% |/g
 
 without the \ and \ markers.  You can read
 more about the 
 problematic operators at
 
   :help /\
 
 or making them part of the set of characters that
 constitute a 
 keyword, by reading at
 
   :help 'iskeyword'
 
 HTH,
 
 -tim
 

Thanks. The problem is now resolved.

--
Muhammad Farooq-i-Azam

__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Replacing '%' in a text file

2006-10-09 Thread Muhammad Farooq-i-Azam
I have to replace every occurrence of % in a file with
% |. I have been effectively replacing text using the
following construct:

:%s/\text\/replacement/g

However when I try to do the following:

:%s/\%\/% |/g 

I am greeted by an error message. Obviously, the %
character needs to be treated differently for being
replaced. Escap sequence? I cannot figure out how to
do it. May be trivial for the gurus here. I will be 
thankful for a hint.

Many thanks in advance.

--
Muhammad Farooq-i-Azam 

__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Re: Replacing '%' in a text file

2006-10-09 Thread Jürgen Krämer

Hi,

Muhammad Farooq-i-Azam wrote:

 I have to replace every occurrence of % in a file with
 % |. I have been effectively replacing text using the
 following construct:
 
 :%s/\text\/replacement/g
 
 However when I try to do the following:
 
 :%s/\%\/% |/g 
 
 I am greeted by an error message. Obviously, the %
 character needs to be treated differently for being
 replaced. Escap sequence? I cannot figure out how to
 do it. May be trivial for the gurus here. I will be 
 thankful for a hint.

normally % is not included in the 'iskeyword' option so it is not
considered part of a word. Therefore there can not be the beginning of
a word right in front of %. The same is for true for the end of a word
immediately after a %. You either have to include % in the 'iskeyword'
option by issuing a

  :set iskeyword+=%

before executing your substitute command or use

 :%s/%/% |/g

without '\' and '\', respectively.

Regards,
Jürgen

-- 
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)


Re: Replacing '%' in a text file

2006-10-09 Thread Tim Chase

I have to replace every occurrence of % in a file with
% |. I have been effectively replacing text using the
following construct:

:%s/\text\/replacement/g

However when I try to do the following:

:%s/\%\/% |/g 


I am greeted by an error message. Obviously, the %
character needs to be treated differently for being
replaced. Escap sequence? 


The error message returned should give a clue regarding the 
problem (E486: Pattern not found: \%\).  Your pattern 
\text\ works well for words, ensuring that you don't find 
them as a sub-portion of some other word (such as finding the 
foo in food, snafoo, or confoosion).  However, the \ 
and \ tokens require a transition from a non-word-character to 
a word-character (or vice-versa).  The % character, by default, 
is not a key-word character (though this can be altered by 
changing the 'iskeyword' setting).


Unless there is some context in which you *don't* want to replace 
a % with % |, you can just use


:%s/%/% |/g

without the \ and \ markers.  You can read more about the 
problematic operators at


:help /\

or making them part of the set of characters that constitute a 
keyword, by reading at


:help 'iskeyword'

HTH,

-tim





Re: Replacing '%' in a text file

2006-10-09 Thread Scot P. Floess

I create a test file and was able to replace all % with % | by doing this:

:%s/%/% |/g

You shouldn't need to escape the %

Muhammad Farooq-i-Azam wrote:

I have to replace every occurrence of % in a file with
% |. I have been effectively replacing text using the
following construct:

:%s/\text\/replacement/g

However when I try to do the following:

:%s/\%\/% |/g 


I am greeted by an error message. Obviously, the %
character needs to be treated differently for being
replaced. Escap sequence? I cannot figure out how to
do it. May be trivial for the gurus here. I will be 
thankful for a hint.


Many thanks in advance.

--
Muhammad Farooq-i-Azam 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

  


--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate  http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim



Re: Replacing '%' in a text file

2006-10-09 Thread A.J.Mechelynck

Muhammad Farooq-i-Azam wrote:

I have to replace every occurrence of % in a file with
% |. I have been effectively replacing text using the
following construct:

:%s/\text\/replacement/g

However when I try to do the following:

:%s/\%\/% |/g 


I am greeted by an error message. Obviously, the %
character needs to be treated differently for being
replaced. Escap sequence? I cannot figure out how to
do it. May be trivial for the gurus here. I will be 
thankful for a hint.


Many thanks in advance.

--
Muhammad Farooq-i-Azam 


Which message do you encounter? If it's E486: Pattern not found: \%\ it 
means that Vim doesn't find a match. I guess the boundary between space and %, 
or % and space, is not seen as a word boundary. What is 'iskeyword' set to? By 
default, nothing lower than 48 (0x30 i.e., the digit zero) is a keyword 
character. Now % is 0x25, i.e., it is not included. Thus it is not seen as 
part of a word, and therefore it cannot be preceded by a begin-of word or 
followed by an end-of-word.


I suggest the following code snippet:

let save_isk = isk
setlocal isk+=%
%s/\%\/% |/g
let l:isk = save_isk

If you can afford to replace every percent sign regardless of what precedes or 
follows it, you can do simply


:%s/%/% |/g


Best regards,
Tony.