[TxMt] Re: Select word and replace with different word

Allan Odgaard mailinglist at textmate.org
Thu Mar 13 06:12:51 UTC 2014


On 12 Mar 2014, at 21:37, Ross Ahmed wrote:

> I often have a list of birds like this […] I need to convert them 
> into their abbreviated codes […]
>
> My current strategy is to just manually replace each bird name with 
> their
> code. I was hoping to make 5 selections (multiple cursors, one cursor 
> for
> each bird name), and convert them to their codes in one keystroke. 
> Does this
> sound possible?

Since a lookup table is required to transform the bird names, there is 
no good way around writing code for this task.

But a simple command can do this, I attached an example. Double-click to 
install.

After that, you can press F3 to convert bird names in your selection or 
document (if there is no selection).

You can augment the list in the bundle editor and/or change the key 
equivalent.
-------------- next part --------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>command</key>
	<string>#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -wKU

Birds = {
  'Mallard'       => 'BA',
  'Redshank'      => 'MA',
  'Ringed Plover' => 'RK',
  'Turnstone'     => 'RP',  
}

regexp = Regexp.new('\b(' + Birds.keys.join('|') + ')\b')
STDOUT << STDIN.read.gsub(regexp) { |m| Birds[m] }
</string>
	<key>keyEquivalent</key>
	<string></string>
	<key>name</key>
	<string>Convert Birdnames</string>
	<key>outputCaret</key>
	<string>interpolateByLine</string>
	<key>uuid</key>
	<string>D3F9AE87-7043-4B2C-9A1A-51968AC5E8B8</string>
</dict>
</plist>


More information about the textmate mailing list