Does zeus allow column editing?
Sample Text
open c:\test\testfile1.htm
open c:\test\testfile1.htm
open c:\test\testfile1.htm
open c:\test\testfile1.htm
open c:\test\testfile1.htm
There's two things I want to be able to do here:
1. column-select the text: \test\ in each row and then type \example\ and have the Sample text now look like:
open c:\example\testfile1.htm
open c:\example\testfile1.htm
open c:\example\testfile1.htm
open c:\example\testfile1.htm
open c:\example\testfile1.htm
So far, all I can get zeus to do is this:
open c:\example\testfile1.htm
open c:testfile1.htm
open c:testfile1.htm
open c:testfile1.htm
open c:testfile1.htm
Not very intuitive to me.
2. I'd like to be able to column-select the 1 in each row, and replace it with numbers, so my sample would now look like:
open c:\example\testfile1.htm
open c:\example\testfile2.htm
open c:\example\testfile3.htm
open c:\example\testfile4.htm
open c:\example\testfile5.htm
I've found other editors that do both of these, but there's enough about them that I don't like that I'm giving zeus a try.
Thanks
column editing
Zeus does Column, Line and Block marking via the MarkColumnToggle, MarkLineToggle, MarkBlockToggle keyboard functions.Does zeus allow column editing?
For example with the Brief keyboard mapping enabled these keyboard functions are bound to the Alt+C, Alt+L and Alt+M key combinations.
Zeus also can do column, block or line mouse marking. To set the required marking mode use the Options, Editor Options menu and in the General section select the default mouse marking mode. The installer sets the default mouse marking mode to Block (ie Column) mode.
You can also override the current mouse marking mode by holding down the Alt or Ctrl or Shift keys while using the mouse to do the marking.
There are at least two ways to do this in Zeus:1. column-select the text: \test\ in each row and then type \example\ and have the Sample text now look like:
Search and Replace
1) Select the block of text containing the \test\ for each of the row to be changed.
2) Use the Edit, Replace menu and replace test for example. Zeus will have automatically select the Market text only option.
Using a Keyboard macro
1) Macros Record Start Stop menu to start recording
2) Type in the required changes for the first line
3) Macros Record Start Stop menu to stop recording
4) Macros Record Playback run the macro and edit the second line
I suspect what might be going wrong is the \ is being translated into the \t tab character. If you leave out the \ or type in \\t this should fix this. The \\ translates to a \ characterSo far, all I can get zeus to do is this:

The only way this can be done in Zeus is by using a macro. For example the following numbers.lua should do something like this:2. I'd like to be able to column-select the 1 in each row, and replace it with numbers, so my sample would now look like:
Code: Select all
function key_macro()
-- macro only works for read/write documents.
if (is_read_only() == 1) or (is_document() == 0) then
message("This macro can only be used with a writable document.")
beep()
return
end
-- macro only works for marked documents
if is_marked() == 0 then
message("This macro needs a column marked area.")
beep()
return
end
-- get the marked text details
local top = get_marked_top()
local range = get_marked_bottom() - top + 1
-- disable screen updates
screen_update_disable()
-- delete the marked area
MarkDeleteEx()
-- comment the lines selected
for i = 1, range, 1 do
-- build the number
local number = string.format("%d", i)
-- save the current cursor
cursor_save()
-- write out the number
write(number)
-- restore cursor
cursor_restore()
-- move to the next line
MoveLineDown()
end
-- restore screen updates
screen_update_enable()
end
key_macro() -- run the macro
Cheers Jussi
column editing
Thanks for the reply. The line numbering macro looks pretty useful.
That column editing thing though is something I do pretty frequently, and search/replace won't always get the job done - the text in each row selected could be different. Creating a macro to repeat the change seems clunky. I wouldn't want to create a new macro for each one-off occurrence of an edit like this.
Is there any chance of getting a column edit option added to zeus (default the option "off" so it's consistent with current behavior) so that any text changes made while a column is highlighted occur on every row of the selection?
Thanks again.
That column editing thing though is something I do pretty frequently, and search/replace won't always get the job done - the text in each row selected could be different. Creating a macro to repeat the change seems clunky. I wouldn't want to create a new macro for each one-off occurrence of an edit like this.
Is there any chance of getting a column edit option added to zeus (default the option "off" so it's consistent with current behavior) so that any text changes made while a column is highlighted occur on every row of the selection?
Thanks again.
I have added this feature request to the Zeus todo listIs there any chance of getting a column edit option added to zeus (default the option "off" so it's consistent with current behavior) so that any text changes made while a column is highlighted occur on every row of the selection?

In the mean time all I can suggest is the following Lua macro as an alternative method to do the text replacement:
Code: Select all
function key_macro()
-- macro only works for read/write documents.
if (is_read_only() == 1) or (is_document() == 0) then
message("This macro can only be used with a writable document.")
beep()
return
end
-- macro only works for marked documents
if is_marked() == 0 then
message("This macro needs a column marked area.")
beep()
return
end
local default = ""
-- ask for a user for the replacement text
local text = user_input("Replacement Text:", default)
if (string.len(text) == 0) then
message("Macro cancelled by user.")
return
end
-- get the marked text details
local top = get_marked_top()
local range = get_marked_bottom() - top + 1
-- disable screen updates
screen_update_disable()
-- delete the marked area
MarkDeleteEx()
-- do the text replacement
for i = 1, range, 1 do
-- save the current cursor
cursor_save()
-- write out the replacement text
write(text)
-- restore cursor
cursor_restore()
-- move to the next line
MoveLineDown()
end
-- restore screen updates
screen_update_enable()
end
key_macro() -- run the macro
Cheers Jussi
Instead of a replace you could do an insert:
just add the line
after
and replace
with
Amit
just add the line
Code: Select all
local left = get_marked_left()
Code: Select all
local top = get_marked_top()
Code: Select all
MarkDeleteEx()
Code: Select all
set_line_pos(top)
set_cursor_pos(left)