summaryrefslogtreecommitdiff
path: root/global/.local/share/thesiah/keys/sc-im
diff options
context:
space:
mode:
Diffstat (limited to 'global/.local/share/thesiah/keys/sc-im')
-rw-r--r--global/.local/share/thesiah/keys/sc-im2226
1 files changed, 2226 insertions, 0 deletions
diff --git a/global/.local/share/thesiah/keys/sc-im b/global/.local/share/thesiah/keys/sc-im
new file mode 100644
index 0000000..b5a2e90
--- /dev/null
+++ b/global/.local/share/thesiah/keys/sc-im
@@ -0,0 +1,2226 @@
+ _
+ ___ ___ (_)_ __ ___
+/ __|/ __|____| | '_ ` _ \
+\__ \ (_|_____| | | | | | |
+|___/\___| |_|_| |_| |_|
+
+sc-im is a vim-like csv viewer.
+
+==============================================================================
+sc-im has the following modes:
+
+sc-im has the following modes:
+ NORMAL MODE: In Normal mode, you can navigate cells and input normal
+ commands.
+ INSERT MODE: Use the '=', '<', '>', or '\' to go to Insert mode, where you
+ can enter new values and expressions into cells.
+ EDIT MODE: Use the 'e' or 'E' keys to go to Edit mode and enter a single
+ line, Vi-like, command to modify cell content
+ and expressions. The 'e' and 'E' keys enter this mode.
+ COMMAND MODE: Use the ':' key to enter Command mode. This is for entering
+ special commands such as quitting the app and saving files.
+ VISUAL MODE: Visual mode is used for selecting a range of cells. See the
+ section 'Selecting a range' below.
+ The 'v' key enters this mode from Normal mode, or <C-v> in
+ Insert and Command modes.
+
+==============================================================================
+&NORMAL MODE&
+
+Navigation commands:
+ j k l h Move cursor down, up, right or left.
+ <UP> Move cursor up
+ <DOWN> Move cursor down
+ <LEFT> Move cursor left
+ <RIGHT> Move cursor right
+ ^ Go up to row 0 of the current column.
+ # Go down to the last valid row of the current column. If
+ already in last valid row of the current column, then jump to
+ last valid row of the last valid cell in spreadsheet.
+ 0 Go left to column A in the current row.
+ $ Go right to the last valid column of the current row.
+ b Go back to the previous valid cell.
+ w Go forward to the next valid cell.
+ '{a-zA-Z} Go to the cell or range marked previously with the character.
+ See 'm' for details.
+ goab24 Go to cell AB24. (There is no need to press <ENTER>.)
+ g0 Go to the leftmost column visible on screen.
+ g$ Go to the rightmost column visible on screen.
+ gM Go to the middle column on the screen.
+ gf Open filename or URL in current cell.
+ Uses helper script 'scopen' by default.
+ A different executable may be used by changing the
+ 'default_open_file_under_cursor_cmd' configuration variable
+ at runtime, using the :set command.
+ H Go to the top row visible on screen.
+ L Go to the lowest row visible on screen.
+ M Go to the middle row on the screen.
+ gg c-a Go to the first cell of sheet.
+ G gG Go to last valid cell of sheet.
+ gl Go to the last (previously occupied) cell position.
+ gt Move to next sheet in file.
+ gT Move to previous sheet in file.
+ c-f c-b Scrolls down and up full screen.
+ :set half_page_scroll=1 to scroll by half a page instead.
+ half_page_scroll=0 (default) scrolls by a full page.
+ See :set command for details.
+ c-e c-y Scroll a row down and up.
+ zh Scroll left one column.
+ zl Scroll right one column.
+ zH Scroll left half a page.
+ zL Scroll right half page.
+ zm Scroll horizontally to position the selected cell at the
+ center of the screen.
+ zz or z. Scroll vertically to position the selected cell at the middle
+ of the screen.
+ zt Scroll vertically to position the selected cell at the top
+ of the screen.
+ zb Scroll vertically to position the selected cell at the bottom
+ of the screen.
+ Vir Select the smallest range that covers all valid cells.
+ ESC or c-g Clean stdin buffer, so sc-im no longer waits for completing a
+ correct command.
+
+
+Commands for handling cell content:
+ x dd Delete the current selected cell or range and save its
+ content in the yankbuffer.
+ m{a-zA-Z} Mark the current cell or selected range with that letter.
+ Note: When a mark is changed, all ranges that use that mark
+ are deleted.
+ c{a-zA-Z} Copy the marked cell or range to the current position,
+ adjusting row and column references in its numeric or string
+ expression, if any.
+ R{a-zA-Z}{a-zA-Z}
+ Select the range defined by the two marks.
+ Note: If a range already exists, it is replaced with the new
+ values.
+
+ { } | Align the content of a cell to the left, right or center. If
+ a range is selected, every cell of the range gets aligned.
+
+ f< , fh , f-LEFT: Change column format: Decrement column width.
+ f> , fl , f-RIGHT: Change column format: Increment column width.
+ f+ Change column format: Increment decimal precision.
+ f- Change column format: Decrement decimal precision.
+ fj , f-DOWN: Change row format: Increase height.
+ fk , f-UP: Change row format: Decrease height.
+
+ fr Freeze a row or the rows selected.
+ If none is selected it freezes the current row.
+
+ fc Freeze a col or the cols selected.
+ If none is selected it freezes the current col.
+
+ fa Freeze the area selected.
+
+ ir Insert a row.
+ ic Insert a column.
+ or Open a row: insert after the current row.
+ oc Open a column: insert after the current column.
+ sk Shifts the current cell or range up.
+ sj Shifts the current cell or range down.
+ sh Shifts the current cell or range left.
+ sl Shifts the current cell or range right.
+
+ yy Yank the selected cell.
+ y If a range is selected, yank the range.
+ yr Yank current row.
+ yc Yank current column.
+
+ p Paste the previously yanked cell or range.
+ If yr was used to yank a row, create a new row below and
+ paste content there.
+ If yc was used to yank a column, create a new column to the
+ left and paste content there.
+ Pf Works like 'p' except that only the cell formatting is
+ merged, leaving cell values intact.
+ Pv Works like 'p' except that only cell values are copied,
+ leaving cell formatting intact.
+ Pc Works like 'p' except that all cell references are adjusted
+ in the same way that they are for the copy command.
+ Pt Paste a range of cells but transposed.
+
+ t Same as 'p' but if yr was used to yank a row, create a new
+ row above and paste content there.
+ If yc was used to yank a column, create a new column to the
+ right and paste content there.
+ Tf Works like 't' except that only cell formatting information
+ is merged in, leaving cell values intact.
+ Tv Works like 't' except that only cell values are copied,
+ leaving cell formatting intact.
+ Tc Works like 't' except that all cell references are adjusted
+ in the same way that they are for the copy command.
+
+ dr Delete the current row.
+ dc Deletes the current column.
+ . Repeat the last normal mode command.
+ - Decrease a numeric value of the cell or range.
+ + Increase a numeric value of the cell or range.
+
+ u UNDO last change
+ c-r REDO last change
+ Note: Events implemented for undo and redo:
+ 1. cell or range deletion
+ 2. cell input
+ 3. cell editing
+ 4. cell or range change in alignment
+ 5. pasting a cell or range
+ 6. range or cell shift with sh sj sk sl
+ 7. row or column insertion
+ 8. row or column deletion
+ 9. pasting a row or column
+ 10. zap(hide) or show a row or column
+ 11. reordering of a range
+ 12. changing the format of a range or cell
+ 13. '-' and '+' commands in normal mode
+ 14. locking and unlocking of cells
+ 15. the datefmt command
+ 16. the cellcolor command
+ 17. Change in format of a column as a result of the 'f' command
+ 18. Change in format of a column as a result of auto_jus
+ 19. Change format of columns as a result of ic dc
+ 20. fill command
+ 21. unformat
+ 22. change in the format of rows
+
+ c-d Convert the text content of a selected cell or range to a
+ date, using default LOCALE's D_FMT format.
+ This converts text to a numeric value that can be shown as a
+ date. See DATES INPUT below for more info.
+ Note: USELOCALE has to be enabled during build.
+
+ aa c-j Auto-resize the selected column(s) to accommodate the widest
+ cells.
+
+ Other commands:
+ ^L Redraw the screen.
+ Zr Zap (hide) the current row.
+ Zc Zap (hide) the current column.
+ Sr If a range is selected, show the rows hidden in the range.
+ Sc If a range is selected, show the columns hidden in the range.
+ / Alias for ':int goto '.
+
+ If a number is given, sc-im will search for a cell containing
+ that number. Searches for either strings or numbers proceed
+ forward from the current cell, wrapping back to a0 at the end
+ of the table, and terminate at the current cell if the string
+ or number is not found.
+
+ Example: Type '/4' to look for cells containing the value 4.
+ Or type '/"value"' to look for cells that has "value" as
+ label content.
+ You can quote a regular expression, and sc-im will search for
+ a cell containing a string matching that regular expression.
+ Example: Type / followed by "[_mente]" (with the double
+ quotes). That will look up for cells that has one character
+ and finish with 'mente'
+
+ You can search for formatted numbers or expressions using
+ regular expressions by preceding the opening quotes of the
+ regular expression with a '#' (for formatted numbers) or a
+ '%' (for expressions).
+ These are handy for searching for dates within a specified
+ range or cells which reference a given cell, for example,
+ although they are somewhat slower than searching through
+ ordinary strings, since all numbers must be formatted or
+ expressions decompiled on the fly during the search.
+
+ ? Same as / but searches backwards.
+ n Move to next search match.
+ N Move to previous search match.
+
+ rl Lock the current cell or range. Locking makes cells immune to
+ any type of editing. A locked cell can't be changed in any
+ way until it is unlocked.
+ ru Unlock a locked cell or range, making it editable.
+ rv Valueize the current cell or range. Valueizing removes
+ expressions, leaving only the values.
+
+==============================================================================
+&INSERT MODE&
+
+ = Enter a numeric constant or expression.
+ < Enter a left justified string or string expression.
+ \ Enter a centered label.
+ > Enter a right justified string or string expression.
+ >
+ NOTE: if entering strings that exceed column width, you
+ can make them show truncated, overlapping to adjacent column, or to
+ wrap it increasing the rows height.
+ Please see :set overlap, :set truncate, :set autowrap
+ options.
+ You can also type \n when entering strings and sc-im will increase
+ row height accordangly.
+
+ <TAB> Return to Edit mode from Insert mode.
+ <LEFT>, <RIGHT>
+ Move the cursor with the arrow keys.
+ Keys <ENTER>
+ Input numbers, letters and operators.
+ <BS>, <DELETE>
+ Delete the character after or before the cursor.
+ <ESC> Go back to NORMAL MODE. If you were in EDIT MODE before,
+ it goes back to that mode, instead of NORMAL MODE.
+ c-r{a-zA-Z}
+ If the character is a mark of a cell or range, the range
+ represented is inserted into the field.
+ c-v Enter Visual mode. See C-o and C-k commands in VISUAL MODE.
+ \\{char} Fills the cell with n occurrences of {char} to complete its width.
+
+==============================================================================
+&EDIT MODE&
+
+ e In normal mode, enter Edit mode to edit a numeric value.
+ E In normal mode, enter Edit mode to edit a text value.
+ h Move a character left.
+ l Move a character right.
+ w Move to the beginning of the next word.
+ e If at the end of a word, move to the end of the next word.
+ Otherwise, move to the end of word under the cursor.
+ b If at the beginning of a word, move to beginning of the
+ previous word. Otherwise, move to beginning of word under the
+ cursor.
+ 0 Move to the beginning of the line.
+ ^ Go to the first non blank character of the line
+ $ Move to the end of the line.
+ g_ Go to the last non blank character of the line
+ f{char} Move to the next occurrence of {char} to the right.
+ F{char} Move to the previous occurrence of {char} to the left.
+ t{char} Move until the next occurrence of {char} to the right.
+ T{char} Move until the previous occurrence of {char} to the left.
+ r{char} Replaces the character under the cursor with {char}.
+ R{word} Each character you type replaces an existing character,
+ starting with the character under the cursor.
+ ESC key or ENTER key must be pressed when finished typing the
+ new word.
+
+ de Delete until the end of the word.
+ dw Delete until the beginning of the next word.
+
+ d0 Delete until the beginning of the line.
+ d$ Delete until the end of the line.
+ d^ Delete from position until the first non blank character of the line
+ dg_ Delete from position until the last non blank character of the line
+
+ db If at the beginning of a word, delete until the beginning of
+ the previous word. Otherwise, delete until the beginning of
+ the word under the cursor.
+ daw Delete the word under the cursor.
+ dE Delete until the end of WORD.
+ dW Delete until the beginning of the next WORD.
+
+ dB If at the beginning of a word, delete until the beginning of
+ previous WORD. Otherwise, delete until the beginning of the
+ WORD under the cursor.
+ daW Delete the WORD under the cursor.
+ dl Delete the character under the cursor.
+ d<RIGHT> Delete the character under the cursor.
+ dh Delete the character before the cursor.
+ d<LEFT> Delete the character before the cursor.
+ df{char} Delete until the first occurrence of {char} to the right.
+ dF{char} Delete until the previous occurrence of {char} to the left.
+ dt{char} Delete until the next occurrence of {char} to the right.
+ dT{char} Delete until the previous occurrence of {char} to the left.
+
+
+ ce Same as "de", then enter Insert mode.
+ cw Same as "dw", then enter Insert mode.
+ c0 Same as "d0", then enter Insert mode.
+ cb Same as "db", then enter Insert mode.
+ caw Same as "daw", then enter Insert mode.
+ cE Same as "dE", then enter Insert mode.
+ cW Same as "dW", then enter Insert mode.
+ c$ Same as "d$", then enter Insert mode.
+ c^ Same as "d^", then enter Insert mode.
+ cg_ Same as "dg_", then enter Insert mode.
+ cB Same as "dB", then enter Insert mode.
+ caW Same as "daW", then enter Insert mode.
+ cl Same as "dl", then enter Insert mode.
+ c<RIGHT> Same as "d<RIGHT>", then enter Insert mode.
+ ch Same as "dh", then enter Insert mode.
+ c<LEFT> Same as "d<LEFT>", then enter Insert mode.
+ cf{char} Same as "df{char}", then enter Insert mode.
+ cF{char} Same as "dF{char}", then enter Insert mode.
+ ct{char} Same as "dt{char}", then enter Insert mode.
+ cT{char} Same as "dT{char}", then enter Insert mode.
+
+ x Delete the character under the cursor.
+ X Delete the character before the cursor.
+ i or = Go back to Insert mode.
+ a Append a character after the cursor.
+ s Delete a character under the cursor, then enter Insert mode.
+ A Append at the end of the line.
+ I Append at the beginning of the line.
+ D Delete from the current cursor position to end of line.
+ C Same as D, but then enter Insert mode.
+ <SPACE> Add a space under the cursor.
+ <ENTER> Confirm changes.
+ <ESC> It also confirm changes. If you were in INSERT MODE before,
+ it goes back to that mode, instead of NORMAL MODE.
+==============================================================================
+&COMMAND MODE&
+
+ <LEFT>, <RIGHT>
+ Move the cursor position with the arrow keys.
+
+ <ENTER>
+ Confirm a command.
+
+ <DELETE>, <BS>
+ Delete the character under the cursor, or before the cursor.
+
+ <HOME>, <END>
+ Move the cursor to the beginning or end of the line.
+
+ <TAB> Complete a command that begins with the text already entered
+ in the command line.
+
+ <C-w>, <C-b>
+ Move forward or backwards a word.
+
+ <C-f>
+ Paste the current cell format (if any) to the command line.
+
+ <C-v> Starts VISUAL MODE. See C-o and C-k commands in VISUAL MODE.
+
+ :w Save the current spreadsheet.
+ :w {file} Save the current spreadsheet as {file}.
+ :w! {file} Save the current spreadsheet as {file}, forcing an overwrite
+ if {file} already exists.
+ The format in which it will be save will be according to the current file extension, if any.
+
+ :h Show this help.
+ :help Show this help.
+
+ :q[uit] Quit sc-im.
+ :q[uit]! Quit sc-im, ignoring unsaved changes.
+
+ :load {file}
+ Load (or reload) {file} into the sc-im database.
+
+ {file} can be an sc format file (.sc), a comma-separated file
+ (.csv), a tab-separated file (.tab, .tsv),a markdown table
+ file (.md, mkd, .markdown), an xlsx or xls file.
+
+ If loading a csv, tab or tsv file and
+ 'import_delimited_to_text' configuration variable is set
+ Sc-im will import numbers as text.
+
+ If loading an xlsx file and 'xlsx_readformulas' is set, Sc-im
+ will try to import formulas, rather than the final values of
+ a cell.
+
+ :load! {file}
+ Same as previous, but ignore changes done to the current
+ loaded spreadsheet.
+
+ :x Save the current spreadsheet and quit sc-im.
+ :wq
+
+ :x {file} Save the current spreadsheet to {file} and quit sc-im.
+
+ :x! {file} Like ":x", but overwrite {file} if it exists.
+
+ :e tab Export the current spreadsheet to a tab-separated file.
+ The name of the created file comes from the current
+ spreadsheet, with ".tab" appended.
+ If a range is selected, only that range is exported.
+ NOTE: If you do an export with the :e command, current file
+ name stays unchanged.
+ See :file command for more details.
+ See 'ignore_hidden' configuration variable below to avoid exporting
+ hidden rows.
+
+ :e tab {file}
+ Export the current spreadsheet to tab-separated file {file}.
+
+ :e! tab {file}
+ Like ":e tab", but overwrite {file} if it exists.
+ If a range is selected, only that range is exported.
+
+ :e csv Export the current spreadsheet to a comma-separated file.
+
+ :e csv {file}
+ Export the current spreadsheet to comma-separated file
+ {file}.
+
+ :e! csv {file}
+ Like ":e csv", but overwrite {file} if it exists.
+
+ :e txt Export current spreadsheet to plain text.
+ If a range is selected, only that range is exported.
+
+ :e txt {file}
+ Export the current spreadsheet to plain text file {file}.
+
+ :e! txt {file}
+ Like ":e txt", but overwrite {file} if it exists.
+
+ :e tex Export current spreadsheet to Latex file.
+ If a range is selected, only that range is exported.
+
+ :e tex {file}
+ Export the current spreadsheet to Latex file {file}.
+
+ :e! tex {file}
+ Like ":e tex", but overwrite {file} if it exists.
+
+ :e mkd Export the current spreadsheet to a markdown file solely
+ containing a single markdown table.
+ The column alignments come from the cells on the row. All
+ other alignments are ignored as markdown tables do do not
+ support cell level alignment.
+
+ :e mkd {file}
+ Export the current spreadsheet to markdown file {file}.
+
+ :e! mkd {file}
+ Like ":e mkd", but overwrite {file} if it exists.
+
+ :e xlsx {file}
+ Export the current spreadsheet to xlsx file {file}.
+ If 'xlsx_readformulas' is set, sc-im tries to export
+ formulas, rather than the final values of a cell.
+
+ :e! xlsx {file}
+ Like ":e xlsx", but overwrite {file} if it exists.
+
+ :ccopy Copy a selected range to clipboard.
+ When 'ccopy' command is executed, the default value of macro
+ DEFAULT_COPY_TO_CLIPBOARD_CMD (set in Makefile during build)
+ is executed.
+ That value contains a system command that is executed to copy
+ to an specific clipboard. See in Makefile the different
+ options available.
+ You can also set a different value of
+ 'default_copy_to_clipboard_cmd' configuration variable at
+ runtime, using the :set command.
+ This process will export content as plain text.
+ It will not delimit columns with '\t' chars.
+ If you wish to delimit columns with tabs in order to paste
+ content directly into other spreadsheet programs rather than
+ an editor, set "copy_to_clipboard_delimited_tab" to "1".
+ If you wish to copy a full string representation of the range
+ instead of how its currently displayed in Sc-im, set
+ "copy_to_clipboard_wysiwyg" to "0".
+
+ :cpaste Paste clipboard content to Sc-im.
+ When 'cpaste' command is executed, the default value of macro
+ DEFAULT_PASTE_FROM_CLIPBOARD_CMD (set in Makefile during
+ build) is executed.
+ That value contains a system command that is executed to
+ paste content of a specific clipboard to Sc-im.
+ See in Makefile the different options available.
+ You can also set a different value of
+ 'default_paste_from_clipboard_cmd' configuration variable at
+ runtime, using the :set command.
+ This process will treat '\t' chars as column delimiter, and
+ '\n' chars as rows delimiters.
+
+ :version Show sc-im version number.
+
+ If you start Sc-im with ./sc-im --version
+ version number of Sc-im will be printed on screen, including
+ the different features that were enabled when Sc-im was
+ compiled. Afterwards Sc-im will exit.
+
+ :refresh Refresh the UI. Acts like the <C-l> command of NORMAL_MODE.
+
+ :set Show all configuration options and their values.
+
+ :set {option}={value}
+ Set a configuration option to {value}. The arguments may be
+ repeated.
+ Example: :set half_page_scroll=0 numeric_zero=1
+ :set numeric (same as :set numeric=1)
+ :set nonumeric (same as :set numeric=0)
+ :set default_paste_from_clipboard_cmd="xsel"
+
+ :newsheet "{name}"
+ create a new sheet in file and move to it.
+
+ :nextsheet
+ move to next sheet in file
+
+ :prevsheet
+ move to previous sheet in file
+
+ :delsheet "{name}"
+ deletes the sheet named {name}.
+
+ :delsheet
+ deletes the current sheet.
+
+ :renamesheet "{name}"
+ rename the current sheet to {name}.
+
+ :showmaps Show all key mappings.
+
+ :nmap {lhs} {rhs}
+ Map the key sequence {lhs} to {rhs} This mapping takes effect
+ only in NORMAL_MODE.
+ Example: :nmap "H" ":h<cr>"
+
+ :imap {lhs} {rhs}
+ Map the key sequence {lhs} to {rhs} This mapping takes effect
+ only in INSERT_MODE.
+ Example: :imap "<C-f>" "format"
+
+ :emap {lhs} {rhs}
+ Map the key sequence {lhs} to {rhs} This mapping takes effect
+ only in EDIT_MODE.
+ Example: :emap "<C-k>" "D"
+
+ :vmap {lhs} {rhs}
+ Map the key sequence {lhs} to {rhs} This mapping takes effect
+ only in VISUAL_MODE.
+ Example: :vmap "e" "y"
+
+ :cmap {lhs} {rhs}
+ Map the key sequence {lhs} to {rhs} This mapping takes effect
+ only in COMMAND_MODE.
+ Example: :cmap "<C-q>" "quit<cr>"
+ :cmap "kj" "<ESC>"
+
+ :nnoremap {lhs} {rhs}
+ This is the non-recursive version of ":nmap". See NOTES on
+ MAPPING below
+
+ :inoremap {lhs} {rhs}
+ This is the non-recursive version of ":imap". See NOTES on
+ MAPPING below
+
+ :enoremap {lhs} {rhs}
+ This is the non-recursive version of ":emap". See NOTES on
+ MAPPING below
+
+ :vnoremap {lhs} {rhs}
+ This is the non-recursive version of ":vmap". See NOTES on
+ MAPPING below
+
+ :cnoremap {lhs} {rhs}
+ This is the non-recursive version of ":cmap". See NOTES on
+ MAPPING below
+
+ :nunmap {lhs}
+ Remove the map sequence {lhs} that takes effect in
+ NORMAL_MODE.
+
+ :iunmap {lhs}
+ Remove the map sequence {lhs} that takes effect in
+ INSERT_MODE.
+
+ :eunmap {lhs}
+ Remove the map sequence {lhs} that takes effect in
+ EDIT_MODE.
+
+ :vunmap {lhs}
+ Remove the map sequence {lhs} that takes effect in
+ VISUAL_MODE.
+
+ :cunmap {lhs}
+ Remove the map sequence {lhs} that takes effect in
+ COMMAND_MODE.
+
+ :file [{file}]
+ If {file} is given, expand {file}, and set the current file
+ name to the result of the expansion.
+
+ If {file} is not given, display the current file name on
+ the status line.
+ Take note that current file name is set during loading of
+ Sc-im or with this command. If you do an export with the :e
+ command, current file name stays unchanged.
+
+ :fill {range} {initial_number} {increment_number}
+ Fill range {range} with values. The first cell of the range
+ will have {initial_number} and each successive cell
+ increments by {increment_number}.
+ Example: :fill A0:A100 1 0.25
+
+ :format "{format_string}"
+ Set the numeric format for the selected cell or range.
+ {format_string} can contain one or more of these:
+
+ # Digit placeholder. If the number has fewer digits on either
+ side of the decimal point than there are '#' characters in
+ the format, the extra '#' characters are ignored. The number
+ is rounded to the number of digit placeholders as there are
+ to the right of the decimal point. If there are more digits
+ in the number than there are digit placeholders on the left
+ side of the decimal point, then those digits are displayed.
+
+ 0 Digit placeholder. Same as for '#' except that the number
+ is padded with zeroes on either side of the decimal point.
+ The number of zeroes used in padding is determined by the
+ number of digit placeholders after the '0' for digits on
+ the left side of the decimal point and by the number of
+ digit placeholders before the '0' for digits on the right
+ side of the decimal point.
+
+ . Decimal point. Determines how many digits are placed on
+ the right and left sides of the decimal point in the number.
+ Note that numbers smaller than 1 will begin with a decimal
+ point if the left side of the decimal point contains only
+ a '#' digit placeholder. Use a '0' placeholder to get a
+ leading zero in decimal formats.
+
+ % Percentage. For each '%' character in the format, the actual
+ number gets multiplied by 100 for the purposes of formatting
+ (the original value is unmodified) and the '%' character is
+ placed in the same position as it is in the format.
+
+ , Thousands separator. The presence of a ',' in the format
+ (multiple commas are treated as one) will cause the number
+ to be formatted with a ',' separating each set of three digits
+ in the integer part of the number with numbering beginning
+ from the right end of the integer.
+
+ d Specifies a date format that is applied to the numeric value
+ of a cell. (See also the DATES INPUT section below.) Date
+ format strings are identified by the presence of a 'd' in the
+ first position. If this is present, the remainder of the
+ string is passed to the strftime() function, and therefore
+ uses the same conversion specifiers as strftime().
+ For more information on conversion specifiers for date format
+ strings, see the man page for strftime(3).
+
+ E- E+ e- e+
+ Scientific format. Causes the number to formatted in
+ scientific notation. The case of the 'E' or 'e' given is
+ preserved. If the format uses a '+', then the sign is always
+ given for the exponent value. If the format uses a '-', then
+ the sign is only given when the exponent value is negative.
+ Note that if there is no digit placeholder following the '+'
+ or '-', then that part of the formatted number is left out. In
+ general, there should be one or more digit placeholders after
+ the '+' or '-'.
+
+ Examples: :format "###,###,000"
+ :format "d%d/%m/%Y"
+ :format "####.####E+3"
+
+ :formatcol {width} {precision} {fixed-point}
+ Format the selected column or range of columns with the
+ specified format of width, precision and fixed-point.
+
+ :formatrow {height}
+ Format the selected row or range of rows with the specified
+ height.
+
+ :datefmt "{date_format_string}" See the DATES INPUT section below.
+
+
+ :sort {range} "{sort_string}"
+ Sort a range of cells with a given criteria.
+ The rows in the specified range will be sorted according
+ to a criteria given in the form of a string of characters.
+ This string, enclosed in double quotes, may comprise a
+ single criterion or multiple criteria in decreasing order
+ of precedence. Each criterion has three parts, all of which
+ are mandatory.
+
+ The first part is a single character, either + or -, which
+ specifies whether the sort should be done in ascending or
+ descending order, respectively.
+
+ The second part, also a single character, is either # or $,
+ and specifies whether the sort should be based on the numeric
+ portion or the string portion, respectively, of the cells
+ being
+ used for the comparison.
+
+ The third part is one or two letters (case insensitive) that
+ specify the column used for making the comparisons. This
+ column must be in the range being sorted.
+
+ Criteria may be concatenated with ';' and are applied in the
+ order specified.
+
+ Examples: :sort C10:E13 "+#D"
+ :sort C10:E13 "+#C;-#D"
+
+ :sort "{sort_string}"
+ Like ":sort {range}", but the sort is performed on the
+ selected range.
+
+ :subtotal {col_range} {operation} {col_operation}
+ Apply subtotals over the data in a selected range.
+ {col_range} is the column to group by.
+ {operation} can be one of the following:
+ @sum, @prod, @avg, @count, @stddev, @max, @min
+ {col_operation} is the column whose values will be used
+ to do the {operation}.
+ Example: load the file example examples/sc/subtotals.sc,
+ select the A1:C9 range, and type :subtotal A @sum C
+
+ :addfilter "{filter_string}"
+ :showfilters
+ :filteron {range}
+ :filteroff
+ :delfilter {filter_number}
+ :delfilters
+ These commands filter a range of rows by multiple criteria.
+
+ ":addfilter" defines a filter according to {filter_string} in
+ this format:
+
+ The first part is either '#' or '$', and specifies whether the
+ expression evaluates the numeric portion or the string portion
+ of the cell.
+
+ The second part specifies the column that contains the values
+ to be evaluated with the expression.
+
+ The third part is the actual expression evaluated.
+
+ Multiple criteria can be separated with the ';' character.
+
+ Examples:
+ :addfilter "#B<8000"
+ :addfilter "#C>1500"
+ :addfilter "@eqs(@substr($B,1,3),'SEP')"
+ :addfilter "#B>3000;#B<5000;#B>@avg(B1:B20)"
+
+ Once filters are added, you can see the details of each filter
+ with ":showfilters".
+ Each filter is preceded by a number. You can delete a filter
+ with ":delfilter {filter_number}".
+ For example, to remove the first filter defined:
+ :delfilter 0
+
+ ":delfilters" deletes all defined filters.
+
+ ":filteron {range}" applies the filters to the range.
+ Example: :filteron B10:C13
+
+ If a range is selected you can simply type ":filteron".
+
+ ":filteroff" turns off the filters.
+
+ :strtonum {range}
+ Converts string field containing digits to a numeric field.
+ So you can calculate with it.
+ Example:
+ label A0 = "5" -> let A0 = 5 (internal representation)
+
+ :int "{string}"
+ Send a command to the interpreter.
+ Example: :int goto B2
+
+
+ :hidecol {column}
+ :hidecol {column:column}
+ Hide the column or column range given. (Case insensitive.)
+
+ :hiderow {row}
+ :hiderow {row:row}
+ Hide the row or rows given.
+
+ :showcol {column}
+ :showcol {column:column}
+ Show columns that were previously hidden.
+
+ :showcols
+ Having a selected range, it will show cols that were previously hidden in that range.
+
+ :showrow {rows}
+ :showrow {row:row}
+ Show rows that were previously hidden.
+
+ :showrows
+ Having a selected range, it will show rows that were previously hidden in that range.
+
+ :hiddenrows
+ Show details of hidden rows.
+
+ :hiddencols
+ Show details of hidden columns.
+
+ :freezecol {column}
+ :freezecol {column:column}
+ Freeze the column or column range given. (Case insensitive).
+ (the rest of the screen scrolls but the column/s stays fixed
+ on the screen).
+ :freezecol {range}
+ Freeze the columns determined by the selected range.
+
+ :freezerow {row}
+ :freezerow {row:row}
+ Freeze the row or row range given.
+ (the rest of the screen scrolls but the row/s stays fixed on
+ the screen).
+ :freezerow {range}
+ Freeze the rows determined by the selected range.
+
+ :unfreezecol {column}
+ :unfreezecol {column:column}
+ Unfreeze a previous frozen col or range of cols.
+
+ :unfreezerow {row}
+ :unfreezerow {row:row}
+ Unfreeze a previous frozen row or range of rows.
+
+ :pad {spaces}
+ Apply a left padding {spaces} characters in width to a column.
+ If a range selected, pad the columns inside that range.
+
+ :color "{key}={arg} .."
+ Change a color definition.
+
+ {key} is one of the following:
+ type, fg, bg, bold, italic, dim, reverse, standout, underline,
+ blink
+ Notes: The type, fg, and bg keys are mandatory.
+ Some terminal dont support some attributes, such as italic.
+
+ The value of type shall be one of the following:
+ HEADINGS, HEADINGS_ODD, MODE, NUMB, STRG, DATEF,
+ EXPRESSION, GRID_EVEN, GRID_ODD,
+ CELL_ERROR, CELL_NEGATIVE, CELL_SELECTION,
+ CELL_SELECTION_SC, INFO_MSG, ERROR_MSG, CELL_ID,
+ CELL_FORMAT, CELL_CONTENT, WELCOME, NORMAL, INPUT,
+ HELP_HIGHLIGHT.
+
+ The value of fg and bg shall be one of the following:
+ WHITE, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN,
+ DEFAULT_COLOR or NONE_COLOR.
+
+ DEFAULT_COLOR just takes the default color of your
+ terminal. If you set it as fg color it will take default
+ color of your foreground. If you set it as bg color it
+ will take the default background color of your terminal.
+
+
+ If you set fg or bg value to NONE_COLOR. Colors will be kept
+ intact and will not be changed. Just bold, italic and other
+ attributes will be applied.
+
+
+ The value of other parameters are booleans, 1 or 0.
+
+ Example: :color "type=HEADINGS bold=0 fg=BLACK bg=YELLOW"
+
+ Colors can be set at runtime or specified in:
+ a. the scimrc file stored in $HOME/.config/sc-im/
+ b. the current .sc file.
+
+ color "type=HEADINGS fg=WHITE bg=CYAN"
+
+
+ The different types and its details:
+ - HEADINGS Topmost (header) row that lists column names
+ (only for even columns), and leftmost (header) column
+ that lists row numbers.
+ - HEADINGS_ODD The same that above but shown for odd columns.
+ - MODE The text in the top right that indicates which
+ mode sc-im is currently in.
+ - NUMB The cell styling used for cells formatted as
+ numbers (That are positive)
+ - STRG The cell styling used for cells formatted as
+ strings.
+ - DATEF The cell styling used for cells formatted as
+ dates.
+ - CELL_SELECTION - The row and column selection styling
+ used on the HEADINGS to indicate the coordinates of the
+ selected row.
+ - CELL_SELECTION_SC The currently (focussed) cell.
+ - GRID_EVEN: Color shown for even columns itself.
+ - GRID_ODD: Color shown for odd columns itself.
+ - EXPRESSION The cell styling used for cells that are
+ the result of an expression.
+ - CELL_ERROR The cell styling used for when an expression
+ results in an error (like dividing by zero)
+ - CELL_NEGATIVE The cell that is used when a number (or
+ expression) is a negative value.
+ - INFO_MSG The text in the top left corner just above "A"
+ that will provide info messages "At column A" when you
+ try and go past the farthest column to the left
+ - ERROR_MSG The text that will display in the top left
+ corner when a command fails for some reason.
+ - CELL_ID The coordinates of the currently selected cell
+ that displays in the upper top left corner. Just to the
+ left of the CELL_FORMAT and CELL_CONTENT.
+ - CELL_FORMAT The text just to the right of the CELL_ID
+ and left of the CELL_CONTENT in the top left corner that
+ shows the formatting of the currently selected cell.
+ - CELL_CONTENT The text just to the right of the CELL_ID
+ and CELL_FORMAT that shows the content of the currently
+ selected cell. This will show the expression used to get
+ the current cell.
+ - WELCOME The text that shows up when you first open sc-im
+ - NORMAL Text that shows on top of the terminal (like in :help)
+ - INPUT The text that shows up while you type text in the
+ input bar at the top left of the screen.
+ - HELP_HIGHLIGHT Color used for highlighting search results
+ and titles of help page.
+
+ :cellcolor "{key}={arg} .."
+ Change the color of the current cell or range.
+ Example: :cellcolor "bg=CYAN fg=WHITE"
+ :cellcolor "fg=RED bold=1 underline=1"
+ :cellcolor A2:A6 "fg=CYAN bold=1 underline=1"
+
+ :unformat
+ :unformat {range}
+ Removes a previous format set over a range.
+ If not range is specified, it removes the format over current
+ cell.
+
+ :define_color "{color} {R} {G} {B}
+ Create a custom color named {color} with {R} {G} {B} RGB
+ values.
+ RGB values range from 0 to 255.
+
+ Note: This requires that ncurses is built with --enable-ext-colors,
+ and the terminal must support 256 colors. For example, TERM=xterm-256color.
+ You can check how many colors your terminal supports with: 'tput colors' command.
+ sc-im must also be linked to ncursesw library and not the common ncurses library.
+
+ Example of use: :define_color "skyblue" 75 50 200
+
+ To make this take effect every time sc-im is started, you can
+ add it to $HOME/.config/sc-im/scimrc:
+ DEFINE_COLOR "skyblue" 75 50 200
+
+ You then can use the color defined above to colorize a type, like this:
+ :color "type=HEADINGS fg=skyblue bg=BLACK"
+ or adding in $HOME/.config/sc-im/scimrc:
+ color "type=HEADINGS fg=skyblue bg=BLACK"
+
+
+ :redefine_color "{color}" {R} {G} {B}
+ Change the RGB values of the colors defined by ncurses.
+ RGB values range from 0 to 255.
+
+ Note: This requires that ncurses is built with
+ --enable-ext-colors, and the terminal must support 256 colors.
+ For example, TERM=xterm-256color. sc-im must link to
+ ncursesw library and not the common ncurses library.
+
+ Example: :redefine_color "RED" 250 0 0
+
+ To make this take effect every time sc-im is started, you can
+ add it to $HOME/.config/sc-im/scimrc:
+ REDEFINE_COLOR "RED" 250 0 0
+
+ Redefining the BLACK color itself is another way to change the
+ default background color of sc-im.
+
+ :lock Lock the current cell or range. Locked cells are immune to
+ any type of editing and can't be changed in any way until
+ unlocked.
+
+ :unlock Reverses the effect of ":lock", making the current cell or
+ range editable.
+
+ :valueize Replace expressions in the current cell or range with the
+ values evaluated from the expressions.
+
+ :! {cmd} Executes shell command {cmd}.
+
+ :autofit {column}
+ :autofit {column}:{column}
+ Auto-resize the column or column range to fit their contents.
+
+ :autofit Auto-resize the columns covered by the selected cell or range.
+
+ :trigger Trigger action on cell or range. Trigger can be Read or Write
+ or Both. On Read, trigger is executed before evaluating cells
+ value, on Write, after the evaluation. Type of Trigger can be
+ Lua or C. In Lua there are sc-im specific function available
+ accessing cells, more in "examples/lua* directory.
+
+ Example:
+ :trigger a5 "mode=R type=LUA file=trg.lua function=trg"
+
+ Triggers when ever cell a5 is read and calls function
+ trg() in file trg.lua. In Lua column, row and mode is
+ passed as parameter to the function. Mode is whether
+ it was a READ or WRITE trigger.
+
+ :trigger b10 "mode=W type=C file=trg.so function=wr2mysql"
+
+ Function "wr2mysql" in trg.so is called when to
+ cell b10 is written a new value.
+ See "examples/Module/module.c" for more Infos.
+ Adding "-Wl,--export-dynamic" in Makefile for linking
+ sc-im, will export all symbols from sc-im, making it
+ available for dynamic linking with modules.
+
+ The search path for LUA trigger files is
+ $PWD/lua/ or $HOME/.config/sc-im/lua/ or /usr/local/share/sc-im/lua
+ (in that order) and for C Trigger
+ $HOME/.sc-im/module or /usr/local/share/sc-im/module
+
+
+ :untrigger Delete Trigger action on cell. Use with care.
+
+ :fsum Sum the numeric values of a range.
+
+ The range is defined by the immediate cell above the current
+ cell for vertical ranges, or by the immediate cell at the left
+ of the current cell for horizontal ranges.
+
+ The top or left corner is limited by the first non-numeric
+ cell found.
+
+ :fcopy Copy the formula of a selected cell down a number of rows.
+ The number of rows down is determined by the first empty cell
+ in the column to the left of current cell.
+
+ If a range is selected, the formula in the top left cell will
+ be copied down to the end of the range.
+
+ :fcopy {action}
+ Copy the formulas of multiple selected cells into a direction.
+
+ Use "c" or "columns" to copy every formula in the first
+ selected row down its column, "r" or "rows" to copy every
+ formula in the first selected column to the right in its row
+ or "cells" to copy the formula of the first selected cell into
+ all cells of the selected range.
+
+ :plot {type}
+ Plot a graphic using a selected range.
+ Right now, only 'line', 'scatter', 'bar' and 'pie' types are
+ allowed.
+
+ Ex. of use: :plot line
+ This command calls gnuplot using the file called 'plotline'
+ that is first looked in $HOME/.config/sc-im/, and if not found in
+ /usr/local/share/sc-im/ (or HELPDIR path of Makefile).
+ This 'plotline' can be customized by user. (See :plotedit
+ command below). You can set terminal and other gnuplot
+ parameters. Default terminal is 'dumb', although 'caca'
+ terminal is recommended for colors and wide chars support.
+
+ :plotedit {type}
+ Edit a plot file that will be used for plotting.
+ Can contain any gnuplot command.
+ Right now, only 'line' type, 'scatter' type, 'bar' type and
+ 'pie' type files can be edited.
+
+ Ex. of use: :plotedit scatter
+
+ c-r{a-zA-Z}
+ If the character is a mark of a cell or range, the range
+ represented is inserted into the command line.
+
+ Command line history is stored in $HOME/.sciminfo.
+
+ c-p
+ <UP> Go back in command line history.
+ NOTE: if inputline is not empty, up and down keys recall older
+ commands from history, but taking whose commands that
+ beginning matches the current inputline content.
+
+ c-n
+ <DOWN> Go forward in command line history.
+
+==============================================================================
+&VISUAL MODE& - Selecting a range
+
+ Visual mode is used for selecting a range of cells for an operation.
+
+ You can enter this mode with 'v' in Normal mode, or with <C-v> in Insert
+ and Command mode.
+
+ When entering Visual mode from Normal mode, the top left and the bottom
+ right limit of the selected range is set to current row and column.
+
+ From Insert or Command mode, press <C-v>, then position the cursor with
+ arrow keys or hjkl keys, and then press <C-o> to begin selection.
+ Move the cursor to complete the selection, then press <C-k> to input
+ the range into the cell.
+
+ The following motion commands move the cursor during selection:
+ j k l h Move down, up, right or left.
+ 0 Move to column A.
+ $ Move forward to the last valid column of the current row.
+ # Move down to the last valid row of the current column.
+ ^ Move up to row 0 of the current column.
+ '{a-zA-Z} Move to the cell or select the range marked previously with
+ {a-zA-Z}. See the 'm' command for details.
+ c-f c-b Increase selection down or up a full screen.
+ :set half_page_scroll=1 to scroll by half a page instead.
+ See :set command for details.
+ c-a Moves to first cell of spreadsheet.
+
+ y Yank the selected cell or range and exit Visual mode.
+ p Paste the previously yanked cell or range into the Visual
+ Range repeating to fill up the range
+ P Works like 'p' except that all cell references are adjusted
+ in the same way that they are for the copy command.
+
+ x , dd Delete the current range, saving its content to the
+ yankbuffer.
+ H Move to the first row visible on screen.
+ L Move to the last row visible on screen.
+ M Move to the middle row visible on screen.
+ w Move forward to the next valid cell.
+ b Move back to the previous valid cell.
+ G Move to last valid cell of spreadsheet.
+
+ : Enters Command mode preserving the range selection, so a
+ special command can be entered.
+ Zr Zap (hides) the rows covered by the selected range.
+ Zc Zap (hides) the columns covered by the selected range.
+ f Freeze the selected range
+ Sr Show rows that are hidden and that are covered by the selected
+ range.
+ Sc Show columns that are hidden and that are covered by the
+ selected range.
+ { } | Align the content of the cells covered by the selected range
+ to the right, left or center.
+ rl Lock the current cell or range. Locking makes cells immune to
+ any type of editing. A locked cell can't be changed in any
+ way until it is unlocked.
+ ru Unlock a locked cell or range, making it editable.
+ rv Valueize the current cell or range. Valueizing removes
+ expressions, leaving only the values.
+ m{a-zA-Z} Mark the current cell or selected range with that letter.
+ Note: When a mark is changed, all ranges that use that mark
+ are deleted.
+ c-d Convert the text content of a selected cell or range to a
+ date, using default LOCALE's D_FMT format.
+ This converts text to a numeric value that can be shown as a
+ date. See DATES INPUT below for more info.
+ Note: USELOCALE has to be enabled during build.
+ c-j Auto-resize the selected column(s) to accommodate the widest
+ cells.
+
+==============================================================================
+&MAPPING&
+
+ Mapping can be done in any sc-im file or in CONFIG_DIR/scimrc file.
+
+ Maps can be added with the :nmap, :imap, :emap, :cmap and :vmap commands and
+ removed with the :nunmap, :iunmap, :cunmap and :vunmap commands.
+ Example:
+ :nmap "d" ":h<cr>" -> Maps d to ':help<cr>' in Normal mode.
+ :imap "f" "foo" -> Maps f to the string 'foo' in Insert mode.
+ :imap "kj" "<ESC>" -> Maps kj sequence to the ESC key in Insert mode.
+ :emap "<C-k>" "D" -> Maps C-k to D in Edit mode.
+ :cmap "kj" "<ESC>" -> Maps kj sequence to the ESC key in Command mode.
+ :vmap "e" "y" -> Maps e to y in Visual mode.
+
+ Some notes:
+ The Left and Right sequence of a mapping cannot contain numbers.
+
+ The following special keys can be used for mappings:
+ <CR> <C-x> <TAB> <LEFT> <RIGHT> <DOWN> <UP> <DEL> <BS> <HOME> <END>
+ <PGDOWN> <PGUP> <ESC>
+
+ If an existing map sequence is remapped, it is replaced with the new one.
+ Mapping is recursive by default. The non-recursive versions of :nmap,
+ :imap, :emap, :cmap and :vmap are :nnoremap, :inoremap, :enoremap,
+ :cnoremap and :vnoremap.
+ Example:
+ nmap "a" "b",
+ nnoremap "b" "j"
+ nmap "j" ":h<cr>"
+ With this, 'a' maps to 'j', and only 'j' maps to ':h<cr>'.
+
+==============================================================================
+&COMMAND MULTIPLIER&
+
+ An optional number may precede commands in Normal, Visual or Edit mode to
+ multiply or iterate the command.
+ Ex. '4j' in Normal mode, translates to 4 times 'j'.
+ Ex. '4yr' in Normal mode, yanks current row and the 3 rows below it.
+
+ Note: The 'x' command in Visual mode, and the shift commands in Visual
+ mode and Normal mode when a range is selected, cannot be multiplied.
+
+==============================================================================
+&DATES INPUT&
+
+ Dates are internally stored in sc-im as numeric values, and they are
+ displayed as dates if a date format is applied to the cells that store
+ them. You have 3 options for entering dates:
+
+ 1. Dates can be entered as text and then converted to a numeric
+ value with <C-d> or with the :datefmt command.
+
+ a. With <C-d> keybinding:
+ The <C-d> command works on NORMAL and VISUAL modes, and converts
+ cell's text content that represents a date, and sets the numeric
+ value of the cell using using locale's D_FMT format.
+ After conversion, the same format is applied automatically to the
+ cell so that the value is displayed as a date.
+ You can then change the date format with :format command or
+ just leave it as it is with the current locale D_FMT format.
+
+ Example:
+ \03/04/1984
+ <C-d>
+ :format "d %b %Y"
+ will output 'Mar 1984' with my current locale.
+
+ NOTES: + You can edit the date value by changing the text content
+ of the cell with 'E' command.
+ + To get current locale's D_FMT format, you might want to
+ issue ``locale -k d_fmt`` on your current shell.
+
+
+ b. With :datefmt command:
+ This command works like <C-d> but instead of using locale's D_FMT
+ format for conversion, it takes a strftime-compatible format string as
+ a parameter. Its syntax is ':datefmt "{strftime_format}"'
+ After conversion, the same format is applied automatically to the cell
+ so that the value is displayed as a date.
+
+ Example: \12/03/2020
+ :datefmt "%d/%m/%Y"
+
+ NOTE: Take note here that if you edit the date with the 'E' command,
+ sc-im will nevertheless convert the date using locale's D_FMT format
+ and not the one you used with datefmt.
+ You will need to reapply :datefmt "%d/%m/%Y" or whatever format
+ you used earlier to reapply the format after the modification.
+
+ 2. You can also enter dates using the @date and @dts functions.
+ Example: \"@date(@dts(2015, 23, 2), "%d/%m/%Y")
+ will show '23/02/2015'.
+
+ 3. Another option is to enter the numeric value that represents the
+ datetime (that would be the number of seconds since the beginning of the
+ epoch - December 31, 1969, midnight, GMT) and apply a format with the
+ :format special command.
+ Example: =1424660400
+ :format "d%d/%m/%Y"
+
+
+ Please see &Built-in Date and Time Functions& below for more details.
+
+==============================================================================
+&NUMBER FORMATS&
+
+ Numbers follow cell-specific format if set by the :format command.
+ Otherwise they default to column specific format, which can be set by the
+ scripting command FORMAT. The scripting FORMAT command has the syntax
+ FORMAT {COLUMN} {WIDTH} {PRECISION} {TYPE}
+ where TYPE is one of:
+ 0 Fixed-point
+ 1 Scientific format
+ 2 Engineering format
+ The default column format is (10 2 0), meaning width 10, precision 2, and
+ fixed-point. The column format width follows changes to the column width.
+
+ Note: If the exponent is too large (>10^21) or too small (<10^-18), the
+ scientific format is used.
+
+==============================================================================
+&Entering Greek and Math operator symbols&
+
+ Greek letters and a large set of math symbols available in UTF-8
+ can be entered and will display, provided your terminal supports them.
+
+ The full list is given below. In each column, left of the equal sign is
+ the keyboard sequence to be entered, to obtain the character on the right
+ of the equal sign.
+
+ Ctrl-K a * = α Ctrl-K b * = β Ctrl-K c * = ξ Ctrl-K d * = δ
+ Ctrl-K e * = ε Ctrl-K f * = φ Ctrl-K g * = γ Ctrl-K h * = θ
+ Ctrl-K i * = ι Ctrl-K j * = ϊ Ctrl-K k * = κ Ctrl-K l * = λ
+ Ctrl-K m * = μ Ctrl-K n * = ν Ctrl-K o * = ο Ctrl-K p * = π
+ Ctrl-K q * = ψ Ctrl-K r * = ρ Ctrl-K s * = σ Ctrl-K t * = τ
+ Ctrl-K u * = υ Ctrl-K v * = ϋ Ctrl-K w * = ω Ctrl-K x * = χ
+ Ctrl-K y * = η Ctrl-K z * = ζ
+
+ Ctrl-K A * = Α Ctrl-K B * = Β Ctrl-K C * = Ξ Ctrl-K D * = Δ
+ Ctrl-K E * = Ε Ctrl-K F * = Φ Ctrl-K G * = Γ Ctrl-K H * = Θ
+ Ctrl-K I * = Ι Ctrl-K J * = Ϊ Ctrl-K K * = Κ Ctrl-K L * = Λ
+ Ctrl-K M * = Μ Ctrl-K N * = Ν Ctrl-K O * = Ο Ctrl-K P * = Π
+ Ctrl-K Q * = Ψ Ctrl-K R * = Ρ Ctrl-K S * = Σ Ctrl-K T * = Τ
+ Ctrl-K U * = Υ Ctrl-K V * = Ϋ Ctrl-K W * = Ω Ctrl-K X * = Χ
+ Ctrl-K Y * = Η Ctrl-K Z * = Ζ
+
+ Ctrl-K * s = ς Ctrl-K R T = √ Ctrl-K F A = ∀ Ctrl-K T E = ∃
+ Ctrl-K N B = ∇ Ctrl-K ( - = ∈ Ctrl-K - ) = ∋ Ctrl-K d P = ∂
+ Ctrl-K I n = ∫ Ctrl-K I o = ∮ Ctrl-K D I = ∬ Ctrl-K * P = ∏
+ Ctrl-K + Z = ∑ Ctrl-K + - = ± Ctrl-K - + = ∓ Ctrl-K 0 ( = ∝
+ Ctrl-K 0 0 = ∞ Ctrl-K - L = ∟ Ctrl-K - V = ∠ Ctrl-K P P = ∥
+ Ctrl-K A N = ∧ Ctrl-K O R = ∨ Ctrl-K ) U = ∪ Ctrl-K ( U = ∩
+ Ctrl-K ) C = ⊃ Ctrl-K ( C = ⊂ Ctrl-K ) _ = ⊇ Ctrl-K ( _ = ⊆
+ Ctrl-K . : = ∴ Ctrl-K : . = ∵ Ctrl-K ? - = ≃ Ctrl-K ! = = ≠
+ Ctrl-K = 3 = ≡ Ctrl-K = < = ≤ Ctrl-K > = = ≥ Ctrl-K < * = ≪
+ Ctrl-K > * = ≫ Ctrl-K ! < = ≮ Ctrl-K ! > = ≯
+
+ Note: It is possible to enter these characters also in the command mode,
+ but your OS may not support filenames containing them.
+
+==============================================================================
+&Other configuration variables&
+
+ 'autocalc'
+ Set it to recalculate values automatically, or to '0' to do it manually
+ upon execution of a '@' command.
+
+ 'numeric'
+ Set it to '1' to make an initial digit start a numeric value.
+ Set it to '0', to make a digit act as a command multiplier.
+
+ 'numeric_zero' [default off]
+ 'numeric_decimal' [default off]
+ When these are set, the zero digit or decimal point will correspondingly
+ initiate numeric entry, but only when 'numeric' is also set.
+
+ 'newline_action' [default 0]
+ Set it to 'j' to move the cursor down after an entry.
+ Set it to 'l' to move right, or set it to '0' to take no action.
+
+ 'external_functions' [default off]
+ Disabled by default, set this variable to enable external functions. See
+ @ext function below.
+
+ 'exec_lua' [default on]
+ Enabled by default, set this variable to enable the execution of @lua
+ scripts. See @lua function below.
+
+ 'overlap' [default off]
+ If cell content exceedes column width it gets cut off to fit the column
+ width. If overlap is set, the content overflows into the next column.
+
+ 'input_bar_bottom' [default off]
+ Place the input bar at the bottom of the screen.
+
+ 'input_edit_mode' [default off]
+ Always go from INSERT_MODE to EDIT_MODE when pressing ESC in the former.
+
+ 'underline_grid' [default off]
+ Underline cells to make a nicer grid
+
+ 'truncate' [default off]
+ If cell content exceedes column width it gets replaced by asterisks '*'.
+ If truncate is set, the content is cut off at the end of the cell.
+
+ 'autowrap' [default off]
+ Auto wrap cell content and auto adjust row height to cover it.
+ Works only when overlap and truncate are set to off.
+
+ 'debug' [default off]
+ set this to see debug messages in screen
+
+ 'half_page_scroll' [default off]
+ set this to scroll by half a page instead of full page.
+
+ 'xlsx_readformulas' [default off]
+ If 'xlsx_readformulas' is set, sc-im tries to import formulas, rather than
+ the final values of a cell.
+
+ 'tm_gmtoff' [default -10800 seconds]
+ set gmtoffset used for converting datetimes to localtime.
+
+ 'command_timeout' [default 3000 milli seconds]
+ the time sc-im waits for a valid command to be entered (the time it stays in '?')
+
+ 'mapping_timeout' [default 1500 milli seconds]
+ this is used when some user input collides with the start of a mapping.
+ sc-im will wait 'mapping_timeout' for user to complete a mapping. If
+ passed that time no mapping was reached, that input would be passed to
+ the stdin buffer.
+
+ 'ignorecase' [default off]
+ set this to ignore case in searches done with '/' command.
+
+ 'autobackup' [default 0 (no autobackup)]
+ set this to a number in seconds 'n', to backup current file every 'n'
+ seconds.
+ AUTOBACKUP must be set during sc-im build for this feature to be
+ available.
+ If you set this to 0 but AUTOBACKUP was set during build, it still will
+ check for existence of backups before loading a file.
+
+ 'show_cursor' [default off]
+ Make the screen cursor follow the active cell. Useful for people
+ using sc-im with a braille display.
+
+ 'ignore_hidden' [default off]
+ set this if you want the hidden rows of a spreadsheet to be ignored when exporting them
+ to another format.
+ this will also be used in case you also want to copy/paste a range that have hidden rows in
+ it (for instance, the result of an applied filter).
+
+==============================================================================
+&Built-in Range Functions&
+
+ The following functions return the result of performing an operation on
+ all valid (nonblank) entries in the given {range}. The optional second
+ argument {expr} is an expression that is to be evaluated for each cell
+ in the specified range to determine which cells to include in the
+ function. Only those cells for which the expression evaluates to true
+ (non-zero) will be used in calculating the value of the function.
+
+
+ @sum({range})
+ @sum({range},{expr})
+ Sum up the values.
+ examples with optional {expr} argument:
+ @sum(D1:D20,D1>25)
+ @sum(D1:D20,E1>25)
+ @sum(D1:D20,@eqs(C1,"s"))
+ @sum(D1:D20,@eqs(@fixed(C1),"s"))
+
+ @prod({range})
+ @prod({range},{expr})
+ Multiply the values together.
+
+ @avg({range})
+ @avg({range},{expr})
+ Average the values.
+
+ @count({range})
+ @count({range},{expr})
+ Count the values.
+ examples with optional {expr} argument:
+ @count(D1:D20,@eqs(D1,"enero"))
+
+ @max({range})
+ @max({range},{expr})
+ Find the maximum value.
+ See also the multi-argument version of @max below.
+
+ @min({range})
+ @min({range},{expr})
+ Find the minimum value.
+ See also the multi-argument version of @min below.
+
+ @stddev({range})
+ @stddev({range},{expr})
+ Get the sample standard deviation of the values.
+
+ @rows({range})
+ @cols({range})
+ Count the number of rows or columns.
+
+==============================================================================
+&Built-in Numeric Functions&
+
+ @exp({expr})
+ Return e (Euler's number) raised to the {expr} power.
+
+ @ln({expr})
+ Return the natural logarithm of {expr}.
+
+ @log({expr})
+ Return the base-10 logarithm of {expr}.
+
+ @floor({expr})
+ Return the largest integer not greater than {expr}.
+
+ @ceil({expr})
+ Return the smallest integer not less than {expr}.
+
+ @rnd({expr})
+ Round {expr} to the nearest integer. Numbers halfway between integers
+ are rounded up.
+
+ @round({expr},{n})
+ Round {expr} to {n} decimal places. {n} may be positive to round off
+ the right side of the decimal point or negative to round off the left
+ side. See @rnd({expr}) above for rounding types.
+
+ @ascii("{se}")
+ Interpret the string expression {se} as a base-256 number without
+ digit 0 and convert to a base-10 nonnegative number.
+ See also @chr.
+
+ @frow({var})
+ Return the row of the cell {var}. Ex. @frow(A4) returns 4
+
+ @fcol({var})
+ Return the number of the col of the cell {var}. Ex. @fcol(D4) returns 3
+
+ @abs({expr})
+ @fabs({expr})
+ Return the absolute value of {expr}.
+
+ @pow({expr1},{expr2})
+ Return {expr1} raised to the power of {expr2}.
+
+ @hypot({expr1},{expr2})
+ Return @sqrt({expr1}*{expr1}+{expr2}*{expr2}), taking precautions
+ against overflows.
+
+ @pi
+ Return a constant quite close to pi.
+
+ @dtr({expr})
+ Convert {expr} from degrees to radians.
+
+ @rtd({expr})
+ Convert {expr} from radians to degrees.
+
+ @sin({expr})
+ @cos({expr})
+ @tan({expr})
+ Evaluate the trigonometric functions on {expr}, in radians. The
+ magnitude of the arguments are not checked to assure meaningful
+ results.
+
+ @asin({expr})
+ Return the arc sine of {expr} in the range -pi/2 to pi/2.
+
+ @acos({expr})
+ Return the arc cosine of {expr} in the range 0 to pi.
+
+ @atan({expr})
+ Return the arc tangent of {expr} in the range -pi/2 to pi/2.
+
+ @atan2({expr1},{expr2})
+ Returns the arc tangent of e1/e2 in the range -pi to pi.
+
+ @max({expr1},{expr2},...)
+ @min({expr1},{expr2},...)
+ Return the maximum or minimum of the values of the expressions. Two or
+ more expressions may be specified.
+ See also the range version of @max and @min above.
+
+ @ston("{se}")
+ Convert string expression {se} to a numeric value.
+
+ @nval("{se}",{expr})
+ Return the numeric value of a cell selected by name. String expression
+ {se} must evaluate to a column name ("A" - "ZZ") and {expr} must
+ evaluate to a row number (0 - maxrows, by default 65536).
+ If {se} or {expr} is out of bounds, or the cell has no numeric
+ value, the result is 0.
+ You can use this for simple table lookups. See also @sval below.
+ =@nval("B", 0); would output the same as =B0
+
+ @eqs("{se1}","{se2}")
+ Return 1 if string expressions {se1} and {se2} have the same value, 0
+ otherwise.
+
+ @slen("{se}")
+ Returns the length of string expression {se}.
+
+ @evaluate("{se}")
+ Evaluate a string expression as a numeric formula. Example of use:
+ If you have in cell D0 a formula as text, "@sum(A0:A11)", instead of a proper
+ numeric formula inserted with '=', you could make it get evaluated in another
+ cell (for this example E0) with =@evaluate(D0). Please note that this will not
+ added the dependency to the evaluation graph. That means that if you later
+ update the value of cell A0, it will not get updated in cell D0.
+
+==============================================================================
+&String Expressions&
+
+ String expressions are made up of string constants (characters surrounded
+ by double quotation marks), variables (cell names, which refer to the
+ cell's label strings or expressions), and string functions.
+
+ Note: String expressions are only allowed when entering a cell's label
+ string, not its numeric part. They are entered with a backslash followed
+ by a double quote.
+ Examples: \"@coltoa(4)
+ \"A0 # "Plate"
+
+ Note: String expression results may be left or right flushed or centered,
+ according to the type of the cell's string label.
+
+ # Concatenate strings.
+ For example, if the value of A0's string is "the la", then the
+ string expression
+
+ A0 # "zy dog"
+
+ returns the string "the lazy dog".
+
+==============================================================================
+&Built-in String Functions&
+
+ String functions can be entered typing \"
+
+ @substr("{se}",{expr1},{expr2})
+ Extract from string expression {se} the substring indexed by character
+ number {expr1} through {expr2}. (Defaults to the length of {se} if
+ greater than the length.) If {expr1} is less than 1 or greater than
+ {expr2}, the result is the null string. For example,
+
+ @substr ("River Plate", 4, 8)
+
+ returns the string 'er Pl'.
+
+ @upper("{se}")
+ @lower("{se}")
+ Convert the string expression {se} to uppercase or lowercase.
+
+ @capital("{se}")
+ Convert the initial letter of words in {se} to upper case and other
+ letters to lower case.
+
+ @replace("{se}","{eold}","{enew}")
+ Replace occurrences of {eold} in {se} with {enew}.
+ For example, having in A1 the string "Extension" and entering in A2
+ the following:
+ @replace(A1,"n","Z")
+ will result "ExteZsioZ" in A2.
+
+ @ext("{se}",{expr})
+ Call an external program or script. This allows arbitrary functions
+ on values, e.g. table lookups and interpolations. String expression
+ {se} is a command or command line to call with popen(3). {expr} is
+ evaluated, converted to a string, and appended to the command line
+ as an argument. The result of @ex is a string: the first line printed
+ to standard output by the command. The command should emit exactly
+ one output line. Additional output, or output to standard error,
+ messes up th screen. @ext returns a null string and prints an
+ appropriate warning if external functions are disabled, {se} is null,
+ or the attempt to run the command fails.
+
+ External functions can be slow to run, and if enabled are called at
+ each screen update, so they are disabled by default. Use the set
+ command to enable them when needed.
+
+ Example:
+ @ext ("echo", a1)
+
+ You can use @ston to convert the @ext result back to a number.
+
+ Example:
+ @ston (@ext ("form.sc.ext", a9 + b9))
+
+ Note: You can build a command line (including more argument values)
+ from a string expression with concatenation. You can also "hide" the
+ second argument by ending the command line (first argument) with a "#"
+ shell comment.
+
+ @coltoa({expr})
+ Return a string name for a column from the numeric result of {expr}.
+
+ Example:
+ @coltoa(@mycol-1) @nval(coltoa(@mycol-1), @myrow+1)
+
+ @sval("{se}",{expr})
+ Return the string value of a cell selected by column and row. String
+ expression {se} must evaluate to a column name (A - AE) and {expr}
+ must evaluate to a row number (0 - 199). If {se} or {e} is out of
+ bounds, or the cell has no string value, the result is the null
+ string.
+
+ @set8bit("{se}")
+ Return the string "{se}" with 8th bit set.
+
+ @chr({expr})
+ Interpret {expr} as a base-10 nonnegative integer and convert to a
+ string (base-256 number without digit 0).
+ See also @ascii.
+
+ @lua("{luascript}", {i})
+ Executes a "luascript". Using Lua script, sc-im can be extend with lot
+ new functionality, such as complex programming, accessing databases
+ etc.
+
+ Two global variables {r} and {c} are injected in the "luascript". The
+ variables denote the row and column of the calling cell respectively.
+
+ The second parameter {i} is 0 or 1 indicating if the reference to this
+ cell should be added to the formula evaluation graph. Setting it to 0
+ may be a good idea if you call sc.lquery to often in your scripts.
+ However, in the cases were its not added to the dependency graph, it
+ will nevertheless be executed when the cell that calls the script
+ executions is referenced by another cell.
+
+ The return of value of the "luascript" is inserted in the calling
+ cell if it is a string.
+
+ The search patch for LUA scripts files is $PWD/lua/
+ $HOME/.sc-im/lua/ or /usr/local/share/sc-im/lua (in that order)
+
+ To call a lua script use \" as with any other string function.
+ @lua("luascript", 1)
+
+ @fmt("{se}", {e})
+ Convert a number to a string. The argument se must be a valid
+ printf(3) format string. e is converted according to the standard
+ rules. For example, the expression
+ \"@fmt("**%6.3f**", 10.5)
+ yields the string ``**10.500**''. e is a double, so applicable
+ formats are e, E, f, g, and G. Try ``%g'' as a starting point.
+ More details on:
+ https://www.gnu.org/software/libc/manual/html_node/Floating_002dPoint-Conversions.html
+
+ @sevaluate("{se}")
+ Evaluate a string expression as a string formula. Example of use:
+ If you have in cell D0 a string formula as text, "@substr(A0, 4, 6)",
+ instead of a proper string formula inserted with '\"', you could make it
+ get evaluated in another cell (for this example E0) with =@sevaluate(D0).
+ Please note that this will not added the dependency to the evaluation
+ graph. That means that if you later update the value of cell A0, it will
+ not get updated in cell D0.
+
+==============================================================================
+&Built-in Date and Time Functions&
+
+ The following functions operate on an expression {date_expr} denoting a
+ UNIX timestamp.
+
+ @year({date_expr})
+ Return the year. Valid years begin with 1970, although many systems
+ will return years prior to 1970 if e is negative. The last legal year
+ is system dependent.
+
+ @month({date_expr})
+ Return the month, encoded as 1 (January) to 12 (December).
+
+ @day({date_expr})
+ Return the day of the month, encoded as 1 to 31.
+
+ @hour({date_expr})
+ Return the number of hours since midnight, encoded as 0 to 23.
+
+ @minute({date_expr})
+ Return the number of minutes since the last full hour, encoded as 0 to
+ 59.
+
+ @second({date_expr})
+ Return the number of seconds since the last full minute, encoded as 0
+ to 59.
+
+ @now()
+ Return the current time encoded as the number of seconds since the
+ beginning of the epoch (December 31, 1969, midnight, GMT).
+
+ @date({date_expr}, {sexpr})
+ Convert the time {expr} in seconds to a date string, applying a format {sexpr}.
+ This functions is entered as a string formula with \". Example:
+ \"@date(@now, "%d/%m/%Y")
+ Note that you can extract parts of this fixed-format string with @substr().
+ A format string compatible with the strftime() function may optionally be
+ given as a second argument to override the default format.
+ See the strftime(3) man page for details.
+
+ @dts({expr1}, {expr2}, {expr3})
+ Convert a date to the number of seconds from the epoch to the first
+ second of the specified date, local time. Dates may be specified
+ in either (m,d,y) or (y,m,d) format, although the latter is preferred,
+ since it's more universally recognized (m,d,y is only used in America).
+ If e2 > 12 or e3 > 31, then (m,d,y) is assumed. Otherwise, (y,m,d)
+ is assumed.
+ Example of use:
+ @date(@dts(1976, 12, 14)) yields 'Tue Dec 14 00:00:00 1976'
+ @date(@dts(2015, 23, 2), "%d/%m/%Y") yields '23/02/2015'
+
+ The month should range from 1 to 12; the day should range from 1 to the
+ number of days in the specified month; and the year should
+ include the century (e.g. 1999 instead of 99). Any date capable of being
+ handled by the system is valid, typically 14 Dec 1901 to '18 Jan 2038'
+ on a system that uses a 32 bit time_t. Invalid dates or dates outside of
+ this range will return ERROR. For rapid entry of dates using only the
+ numeric keypad, sc provides the alternate syntax y.m.d or m.d.y, which is
+ automatically converted to the @dts(...) format above.
+ The year, month, and day must be entered numerically in the alternate
+ syntax; formulas are not allowed.
+
+ @tts({expr1}, {expr2}, {expr3})
+ @tts(8,20,45) converts the time 8:40:45 to the number of seconds since
+ midnight, the night before. The hour should range from 0 to 23;
+ the minutes and seconds should range from 0 to 59.
+
+
+==============================================================================
+&Other functions&
+ @myrow
+ references current row
+
+ @mycol
+ references current column
+
+ @if({expr}, {expr}, {expr})
+ Conditional: If the first expression is true then the value of
+ the second is returned, otherwise the value of the third.
+ example of use: @if(@eqs(A1,"a"),B1,0)
+ example of use with string expression: @if(A1>100,"over","not enough")
+ Remember string expressions should be entered by typing \"
+
+ @getent({e}, {e})
+ Reference to a cell evaluating expressions. First expression in
+ formula corresponds to row number, the second expression to column
+ number.
+ Example of use: =@sum(A0:@getent(@lastrow-1,0))
+
+
+==============================================================================
+&LUA Scripts and Triggers&
+
+ sc-im was extended with LUA capabilities and also provided with helper
+ functions to manipulate sc-im data with Lua at runtime. Since it is a
+ fully functional Lua, you can also use all Lua packages for sc-im lua
+ scripts. Use luarocks to install additional packages.
+
+ Function provided to lua script/triggers :
+
+ sc.lgetnum (c, r) - get numeric value of cell c,r (c/r is number
+ column/row) returns value
+ sc.lsetnum (c, r, val) - set numeric value to a cell c,t
+ sc.lsetform (c, r, str) - set formula to a cell. Basically it does "let
+ cell= str"
+ sc.lsetstr(c, r, str) - set string to a cell
+ sc.lgetstr(c, r, str) - get string from a cell
+ sc.lquery(str) - query input from user, but first prints str.
+ Use with care!!
+ Dont use this function within triggers!!
+ returns string
+ sc.sc(str) - send str to sc-im parser
+ sc.a2colrow(str) - convert ascii cell representation to numeric
+ column/row returns column, row example:
+ c,r=sc.a2colrow("c5")
+ sc.colrow2a(c,r) - returns ascii representation of numeric
+ column/row
+ sc.maxcols() - return current maximum columns
+ sc.maxrows() - return current maximum rows
+ sc.curcol() - return current column
+ sc.currow() - return current row
+
+ The search patch for LUA scripts files is $PWD/lua or
+ $HOME/.config/sc-im/lua/ or /usr/local/share/sc-im/lua (in that order)
+ Example can be found in sc-im/examples/lua in source code tree.
+
+
+==============================================================================
+&Supported file formats / File import&
+
+ sc-im can open the following file formats:
+ .sc sc-im's native text format
+ .xls Microsoft Excel Spreadsheet
+ .xlsx Microsoft Office Open XML Workbook
+ .csv Comma-separated values
+ .tsv Tab-separated values
+ .tab Tab-separated values
+ .txt Simple text files
+ .mkd Markdown file with only table contents
+ .md Markdown file with only table contents
+
+ You can pass files of any of the above formats to sc-im binary.
+ If you pass a .txt or .csv file to sc-im, it is imported using a comma as
+ the delimiter.
+ If you pass a .tsv or .tab file to sc-im, it is imported using the tab
+ character as the delimiter.
+
+ Note: You can always override the delimiter used passing the --txtdelim
+ parameter to sc-im.
+
+ Example: ./sc-im --txtdelim="\t" file.txt
+
+ Possible values are:
+ --txtdelim="\t"
+ --txtdelim=","
+ --txtdelim=";"
+ --txtdelim="|"
+
+==============================================================================
+&THEMES&
+
+ There are a couple of themes you can use with sc-im.
+ They are "dracula", "old.sc", "papercolor-dark" and "prince.persia", and
+ they are located in the "/themes" folder.
+ You can add the corresponding lines of those to $HOME/.config/sc-im/scimrc
+ or you can load them at runtime with `:load path_to_theme_file`
+
+==============================================================================
+&External scripts&
+
+ sc-im can read data from a external script, either through a pipeline or
+ redirection.
+ This enables sc-im to be used as a non-interactive calculator.
+
+ It can also be run interactively without the ncurses interface if you pass
+ the --nocurses flag.
+
+ You can set the --output parameter to save the results to a file.
+
+ You can set the --quiet parameter to avoid printing messages of all kinds
+ (info, error or debug).
+
+ Export to csv, tab, markdown or plain text formats without interaction:
+ ./sc-im --quit_afterload --nocurses --export_csv
+ ./sc-im --quit_afterload --nocurses --export_tab
+ ./sc-im --quit_afterload --nocurses --export_mkd
+ ./sc-im --quit_afterload --nocurses --export_txt # (or just --export)
+
+ If you set the --quit_afterload flag, sc-im will quit after loading all
+ files, but before becoming interactive.
+
+ Suppose you have a file called "script" with the following content:
+ let A2=0
+ let A3=A2+14
+ recalc
+ getnum A3
+
+ The following invocations demonstrate sc-im's input and output options.
+
+ Output to stdout, then quit:
+ cat script | ./sc-im --nocurses --quit_afterload
+
+ Receive data from a pipe and output results to a file:
+ cat script | ./sc-im --quit_afterload --output=return_file
+
+ Receive data from a pipe and continue in non-ncurses mode:
+ cat script | ./sc-im --nocurses
+
+ Read data from a script and output to a file:
+ ./sc-im a.sc --quit_afterload --output=return_file
+
+ Receive data from both a pipe and a script, and output to file:
+ cat script | ./sc-im a.sc --quit_afterload --output=return_file
+
+ Export data and create pdf
+ echo 'export "mkd" "/dev/stdout"' | ./sc-im --nocurses --quiet --quit_afterload foo.csv | text2pdf -L > fighters.pdf
+
+ Start interactive mode but with no ncurses interface:
+ ./sc-im --nocurses
+
+ Note: Setting the --output parameter implies setting the --nocurses flag.
+
+ sc-im script function names are case insensitive.
+ 'LET A0=1' is the same as 'let A0=1'
+
+ Almost every interactive sc-im command is available for non-interactive
+ scripting. Search the equivalent interactive commands for usage
+ information.
+
+ sc-im has these commands for available for external scripts.
+
+ LET {[COL][ROW]}={expr}
+ Sets the contents of a cell with a value or an expression. E.g.
+ 'LET A1=A2*A2'
+
+ LABEL {[COL][ROW]}={expr}
+ Sets the label of a cell with to a string value.
+
+ EXECUTE "{STRING}"
+ Call an internal COMMAND MODE command. Examples:
+ EXECUTE "load /tmp/test.csv"
+
+ EXPORT "{STRING}" "{STRING}"
+ Export spreadsheet. First parameter is type, second is path to file.
+ example of use:
+ echo 'export "mkd" "/dev/stdout"' | ./sc-im --nocurses --quiet --quit_afterload foo.csv | text2pdf -L > fighters.pdf
+
+ RECALC
+ Recalculates a formulas in all cells
+
+ GETNUM {[COL][ROW]}
+ Get numeric value from cell and print to STDOUT
+
+ GETSTRING {[COL][ROW]}
+ Get text value from cell and print to STDOUT
+
+ GETEXP {[COL][ROW]}
+ Get expression from cell and print to STDOUT
+
+ GETFORMAT {COL}
+ Get format from cell and print to STDOUT
+
+ GETFMT {[COL][ROW]}
+ Get format from cell and print to STDOUT
+
+ QUIT
+ Quits sc-im.
+
+ Other available commands for scripting are:
+
+ DETAIL {var}
+ LEFTSTRING {var_or_range}
+ RIGHTSTRING {var_or_range}
+ LEFTJUSTIFY {var_or_range}
+ RIGHTJUSTIFY {var_or_range}
+ CENTER {var_or_range}
+ FORMAT {COL} {NUMBER} {NUMBER} {NUMBER}
+ FMT {var_or_range} {STRING}
+ DATEFMT {var_or_range} {STRING}
+ DATEFMT {STRING}
+ HIDE {COL}
+ HIDE {NUMBER}
+ SHOW {COL}
+ SHOW {NUMBER}
+ HIDECOL {COL}
+ SHOWCOL {COL}
+ HIDEROW {NUMBER}
+ SHOWROW {NUMBER}
+ SHOWCOL {COL} : {COL}
+ SHOWROW {NUMBER} : {NUMBER}
+ HIDECOL {COL} : {COL}
+ HIDEROW {NUMBER} : {NUMBER}
+ SHIFT {var_or_range} {STRING}
+ MARK {COL} {var_or_range}
+ MARK {COL} {var_or_range} {var_or_range}
+ FILL {var_or_range} {num} {num}
+ FILL {num} {num}
+ UNFREEZE
+ FREEZE {range}
+ FREEZE {NUMBER} : {NUMBER}
+ FREEZE {NUMBER}
+ FREEZE {COL} : {COL}
+ FREEZE {COL}
+ SORT {range} {STRING}
+ SUBTOTAL {range} {COL} {STRING} {COL}
+ RSUBTOTAL {range} {COL} {STRING} {COL}
+ FILTERON {range}
+ AUTOJUS {COL} : {COL}
+ AUTOJUS {COL}
+ GOTO {var_or_range} {var_or_range}
+ GOTO {var_or_range}
+ GOTO {num}
+ GOTO {STRING}
+ GOTO # {STRING}
+ GOTO % {STRING}
+ CCOPY {range}
+ CPASTE
+ LOCK {var_or_range}
+ UNLOCK {var_or_range}
+ NMAP {STRING} {STRING}
+ IMAP {STRING} {STRING}
+ EMAP {STRING} {STRING}
+ NNOREMAP {STRING} {STRING}
+ INOREMAP {STRING} {STRING}
+ ENOREMAP {STRING} {STRING}
+ NUNMAP {STRING}
+ IUNMAP {STRING}
+ EUNMAP {STRING}
+ COLOR {STRING}
+ CELLCOLOR {var_or_range} {STRING}
+ TRIGGER {var_or_range} {STRING}
+ UNTRIGGER {var_or_range}
+ CELLCOLOR {STRING}
+ UNFORMAT {var_or_range}
+ UNFORMAT
+ REDEFINE_COLOR {STRING} {NUMBER} {NUMBER} {NUMBER}
+ FCOPY
+ FCOPY {strarg}
+ FSUM
+ PAD {NUMBER} {COL} : {COL}
+ PAD {NUMBER} {COL}
+ PAD {NUMBER} {var_or_range}
+ PLOT {STRING} {var_or_range}
+ SET {setlist}
+ DEFINE {strarg} {range}
+ DEFINE {strarg} {var}
+ UNDEFINE {var_or_range}
+ EVAL{expr}
+ REBUILD_GRAPH
+ PRINT_GRAPH
+ SYNCREFS
+ UNDO
+ REDO
+ SEVAL{expr}
+ ERROR {STRING}
+
+ The commands below can be used for calculations.
+
+ @MONTH ({expr})
+ @DAY ({expr})
+ @YEAR ({expr})
+ @NOW
+ @DTS ({expr},{expr},{expr})
+ {NUMBER} . {NUMBER} . {NUMBER}
+ @TTS ({expr},{expr},{expr})
+ @STON ({expr})
+ @SLEN ({expr})
+ @EQS ({expr},{expr})
+ @DATE ({expr})
+ @DATE ({expr},{expr})
+ @FMT ({expr},{expr})
+ @UPPER ({expr})
+ @LOWER ({expr})
+ @CAPITAL ({expr})
+ @INDEX ( {range} ,{expr})
+ @INDEX ({expr}, {range} )
+ @INDEX ( {range} ,{expr},{expr})
+ @LOOKUP ( {range} ,{expr})
+ @LOOKUP ({expr}, {range} )
+ @HLOOKUP ( {range} ,{expr},{expr})
+ @HLOOKUP ({expr}, {range} ,{expr})
+ @VLOOKUP ( {range} ,{expr},{expr})
+ @VLOOKUP ({expr}, {range} ,{expr})
+ @STINDEX ( {range} ,{expr})
+ @STINDEX ({expr}, {range} )
+ @STINDEX ( {range} ,{expr},{expr})
+ @EXT ({expr},{expr})
+ @LUA ({expr},{expr})
+ @NVAL ({expr},{expr})
+ @SVAL ({expr},{expr})
+ @REPLACE ({expr},{expr},{expr})
+ @SUBSTR ({expr},{expr},{expr})
+ FNUMBER
+ @PI
+ @FILENAME ({expr})
+ @MYROW
+ @MYCOL
+ @LASTROW
+ @LASTCOL
+ @COLTOA ({expr})
+ @ASCII ({expr})
+ @SET8BIT ({expr})
+ @CHR ({expr})
+ @ERR
+ ERR
+ @REF
+ REF
+
+ The commands below set runtime configuration values:
+
+ OVERLAP = {NUMBER}
+ OVERLAP
+ NOOVERLAP
+ AUTOBACKUP = {NUMBER}
+ NOAUTOBACKUP
+ AUTOCALC
+ AUTOCALC = {NUMBER}
+ NOAUTOCALC
+ DEBUG
+ DEBUG = {NUMBER}
+ NODEBUG
+ TRG
+ TRG = {NUMBER}
+ NOTRG
+ EXTERNAL_FUNCTIONS
+ EXTERNAL_FUNCTIONS = {NUMBER}
+ NOEXTERNAL_FUNCTIONS
+ EXEC_LUA
+ EXEC_LUA = {NUMBER}
+ NOEXEC_LUA
+ HALF_PAGE_SCROLL
+ HALF_PAGE_SCROLL = {NUMBER}
+ NOHALF_PAGE_SCROLL
+ QUIT_AFTERLOAD
+ QUIT_AFTERLOAD = {NUMBER}
+ NOQUIT_AFTERLOAD
+ XLSX_READFORMULAS
+ XLSX_READFORMULAS = {NUMBER}
+ NOXLSX_READFORMULAS
+ NOCURSES
+ NOCURSES = {NUMBER}
+ CURSES
+ NUMERIC
+ NUMERIC = {NUMBER}
+ NONUMERIC
+ IGNORECASE
+ IGNORECASE = {NUMBER}
+ NOIGNORECASE
+ NUMERIC_DECIMAL
+ NUMERIC_DECIMAL = {NUMBER}
+ NONUMERIC_DECIMAL
+ NUMERIC_ZERO
+ NUMERIC_ZERO = {NUMBER}
+ NONUMERIC_ZERO
+ NEWLINE_ACTION
+ NEWLINE_ACTION = {WORD}
+ DEFAULT_COPY_TO_CLIPBOARD_CMD = {strarg}
+ DEFAULT_PASTE_FROM_CLIPBOARD_CMD = {strarg}
+ COPY_TO_CLIPBOARD_DELIMITED_TAB
+ COPY_TO_CLIPBOARD_DELIMITED_TAB = {NUMBER}
+ NOCOPY_TO_CLIPBOARD_DELIMITED_TAB
+ COPY_TO_CLIPBOARD_WYSIWYG
+ COPY_TO_CLIPBOARD_WYSIWYG = {NUMBER}
+ NOCOPY_TO_CLIPBOARD_WYSIWYG
+ DEFAULT_OPEN_FILE_UNDER_CURSOR_CMD = {strarg}
+ NEWLINE_ACTION = {NUMBER}
+ TM_GMTOFF
+ TM_GMTOFF = {num}
+ MAPPING_TIMEOUT
+ MAPPING_TIMEOUT = {num}