Spreadsheet

如何在電子表格計算器 sc 中撤消?

  • September 24, 2016

電子表格計算器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

引用自:https://unix.stackexchange.com/questions/55056