> 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
-~----------~----~----~----~------~----~------~--~---