> Date: Sat, 21 Nov 2009 07:21:44 +0100
> From: [email protected]
> To: [email protected]
> Subject: smartcase s'n'r even smarter?
> 
> 
> 
> Hi,
> 
> in my .vimrc I set smartcase on.
> 
> In my file I have (for example) the following words
> 
> Uppercase
> uppercase
> UPPERCASE
> 
> Doing a 
> 
> :s/uppercase/frankenstein/g
> 
> produces
> 
> frankenstein
> frankenstein
> frankenstein
> 

Sorry I didn't initially understand your question. I do not have a Vim-specific 
answer, but at the risk of being a bit OT here is a Perl solution that 
maintains existing case of all characters in the source data during a search 
and replace operation. Hope this helps.

 

Best regards,

Roy Fulbright

 

#!/usr/bin/perl
use strict;
use warnings;
########################################
#  Name: keepcase.pl
#  Desc: Transfer case of search string to replacement string.
#
#  Explanation of values and symbols:
#  ----------------------------------
#  $old - search string.
#  $new - replacement string.
#  $1   - current value of search string in regex.
#  ^    - XOR (bit is true if and only if one of the two bits is true)
#
#  Expression Evaluated In Regex Replacement String:
#  -------------------------------------------------
#  lc $new # lowercase the replacement string
#  ^ $1    # XOR with $1 - increase replacement string character values
#          # by corresponding ascii value of each character of $1.
#  ^ lc $1 # XOR with lc $1 - subtract the ascii values of lowercase $1.
#          # If both values were lowercase to begin with, the resulting
#          # sum is 0, otherwise the increase is enough to uppercase the
#          # corresponding replacement string character.
##############################################

 

my $old = 'perl';
my $new = 'grep';
my $txt = 'Remember, perl is the program that runs Perl, not PERL, not PeRl, 
and not pErL.';

 

print "\n   *** change '$old' to '$new' while maintaining case ***\n";
print "\nBefore: $txt\n";
$txt =~ s/\b($old)\b/lc$new^$1^lc$1/gie;
print " After: $txt\n\n";

 

 





Hotmail: Trusted email with powerful SPAM protection. Sign up now.
                                          
_________________________________________________________________
Windows 7: I wanted simpler, now it's simpler. I'm a rock star.
http://www.microsoft.com/Windows/windows-7/default.aspx?h=myidea?ocid=PID24727::T:WLMTAGL:ON:WL:en-US:WWL_WIN_myidea:112009
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to