Macros for better word right/left caret movement within the IDE.
Currently the word right/left caret movement in the IDE moves alternately from beginning to
ending of “words.” Therefore it now takes more keystrokes to navigate through a line. These
macros separate the beginning to beginning and end to end movement. Providing faster and more
predictable movement.
There are 8 macros:
- NewWordRight Moves the caret to beginning of next word to the right
- NewWordRightExt As above with selection
- NewWordLeft Moves caret to beginning of next word to the left
- NewWordLeftExt As above with selection
- NewEndWordRight Moves the caret to the end of next word to the right
- NewEndWordRightExt As above with selection
- NewEndWordLeft Moves the caret to the end of next word to the Left
- NewEndWordLeftExt As above with selection
I have attached the NewWord macros to the ctrl/ctrl-shift arrow keys. The NewEndWord’s I have
attached to corresponding alt/alt-shift arrow keys.
Flaws: I have had occasion when the macro gets into an infinite loop when I press the arrow
keys in a fast and “random” pattern. At which time its necessary to double click on the macro
icon in the tray to terminate the macro. Other than this I have seen no other side effects.
Sub NewWordRight()
‘DESCRIPTION: Does a real word right
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”if len(ActiveDocument.Selection) <> 0 then
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
End if
ActiveDocument.Selection.CharRight dsExtend
while InStr ( VarLtr, ActiveDocument.Selection ) <> 0
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharRight dsExtend
wend
while InStr ( VarLtr, ActiveDocument.Selection ) = 0
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharRight dsExtend
wend
ActiveDocument.Selection.CharLeft
End SubSub NewWordLeft()
‘DESCRIPTION: Does a real word left
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”if len(ActiveDocument.Selection) <> 0 then
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
End if
ActiveDocument.Selection.CharLeft dsExtend
while InStr ( VarLtr, ActiveDocument.Selection ) = 0
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharLeft dsExtend
wend
while InStr ( VarLtr, ActiveDocument.Selection ) <> 0
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharLeft dsExtend
wend
ActiveDocument.Selection.CharRight
End SubSub NewWordRightExt()
‘DESCRIPTION: Does a real word right extend select
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”dir = len(ActiveDocument.Selection)
ActiveDocument.Selection.CharRight dsExtend
if dir <> 0 then
if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0
else
dir = 1
End if
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
while InStr ( VarLtr, test ) <> 0
ActiveDocument.Selection.CharRight dsExtend
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
wend
while InStr ( VarLtr, test ) = 0
ActiveDocument.Selection.CharRight dsExtend
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
wend
if dir then ActiveDocument.Selection.CharLeft dsExtend
End SubSub NewWordLeftExt()
‘DESCRIPTION: Does a real word left extend select
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”dir = len(ActiveDocument.Selection)
ActiveDocument.Selection.CharLeft dsExtend
if dir <> 0 then
if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0
else
dir = 1
End if
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
while InStr ( VarLtr, test ) = 0
ActiveDocument.Selection.CharLeft dsExtend
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
wend
while InStr ( VarLtr, test ) <> 0
ActiveDocument.Selection.CharLeft dsExtend
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
wend
if dir then ActiveDocument.Selection.CharRight dsExtend
End SubSub NewEndWordRight()
‘DESCRIPTION: Does an end of word right
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”if len(ActiveDocument.Selection) <> 0 then
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
End if
ActiveDocument.Selection.CharRight dsExtend
while InStr ( VarLtr, ActiveDocument.Selection ) = 0
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharRight dsExtend
wend
while InStr ( VarLtr, ActiveDocument.Selection ) <> 0
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharRight dsExtend
wend
ActiveDocument.Selection.CharLeft
End SubSub NewEndWordLeft()
‘DESCRIPTION: Does an end of word left
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”if len(ActiveDocument.Selection) <> 0 then
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharRight
End if
ActiveDocument.Selection.CharLeft dsExtend
while InStr ( VarLtr, ActiveDocument.Selection ) <> 0
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharLeft dsExtend
wend
while InStr ( VarLtr, ActiveDocument.Selection ) = 0
ActiveDocument.Selection.CharRight
ActiveDocument.Selection.CharLeft
ActiveDocument.Selection.CharLeft dsExtend
wend
ActiveDocument.Selection.CharRight
End SubSub NewEndWordRightExt()
‘DESCRIPTION: Does an end of word right extend select
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”dir = len(ActiveDocument.Selection)
ActiveDocument.Selection.CharRight dsExtend
if dir <> 0 then
if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0
else
dir = 1
End if
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
while InStr ( VarLtr, test ) = 0
ActiveDocument.Selection.CharRight dsExtend
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
wend
while InStr ( VarLtr, test ) <> 0
ActiveDocument.Selection.CharRight dsExtend
if dir then test = Right(ActiveDocument.Selection,1) else test = Left(ActiveDocument.Selection,1)
wend
if dir then ActiveDocument.Selection.CharLeft dsExtend
End SubSub NewEndWordLeftExt()
‘DESCRIPTION: Does an end of word left extend select
VarLtr = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”dir = len(ActiveDocument.Selection)
ActiveDocument.Selection.CharLeft dsExtend
if dir <> 0 then
if len(ActiveDocument.Selection) > dir then dir = 1 else dir = 0
else
dir = 1
End if
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
while InStr ( VarLtr, test ) <> 0
ActiveDocument.Selection.CharLeft dsExtend
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
wend
while InStr ( VarLtr, test ) = 0
ActiveDocument.Selection.CharLeft dsExtend
if dir then test = Left(ActiveDocument.Selection,1) else test = Right(ActiveDocument.Selection,1)
wend
if dir then ActiveDocument.Selection.CharRight dsExtend
End Sub