Spreadsheet
如何在電子表格計算器 sc 中撤消?
電子表格計算器sc是一個非常古老的基於控制台的程序。它做名字所說的。我在其手冊頁中找不到如何撤消操作。我目前將它與 RCS 一起使用,即. 在進行重大更改之前在 RCS 中手動創建版本,並在需要時輪換回某個版本。我想知道是否有更好的方法來做到這一點。謝謝。
這可能是錯誤的希望,但使用 Fedora 的 7.16 RPM 原始碼(可能是 Debian 軟體包原始碼),具有 Yank 和 Pull 功能以及一些戰略調整似乎可以撤消。
例如 = 命令,在 sc.c 中,第 1140 行,換了一行,
case '=': if (locked_cell(currow, curcol)) break; /* set mark 0 */ savedrow[27] = currow; savedcol[27] = curcol; savedstrow[27] = strow; savedstcol[27] = stcol; /* btiffin, yank current cell to buffer 0 */ yankr(lookat(currow, curcol), lookat(currow, curcol)); (void) sprintf(line,"let %s = ", v_name(currow, curcol)); linelim = strlen(line); insert_mode(); break;
呼叫
yankr
將目前單元格內容放在“0”緩衝區中,就像“x”命令或“yy”一樣。因此,如果出現錯誤,至少是簡單的條目,‘pp’ 會將舊單元格內容放回原處。這可能是錯誤的,但它在這裡發揮了魅力。接下來是
yankr
范圍操作。快速瀏覽一下,應該不會再有 50 次左右的戰略呼叫來yankr(start, end)
讓 Pull 命令在出現錯誤時回退。至少上一級。前四次實驗成功,
= LET, < LEFTSTRING, > RIGHTSTRING and \ LABEL
sc
並且已經大大減少了使用時的“邊緣”感覺。案例不僅僅是電子表格,而是從外部腳本驅動電子表格並通過簡單的popen
呼叫設置/獲取單元格值*,順便說一下,在 COBOL GnuCOBOL*中。注意,這只是今天。明天可能會發現致命的錯誤頭腦,這似乎是一個簡單的解決方案。嗯,現在在琢磨,在點擊post之前把這個讀一遍,可能不是緩衝區'0’,……更多閱讀原始碼,無論如何點擊post。
我正在研究基於“sc”的終端電子表格。它具有撤消/重做、映射和其他內容。有興趣的可以看看: https ://github.com/andmarti1424/scim