Octave 通常会跟踪您输入的命令,以便您可以调用先前的命令进行编辑或重新执行。当您退出 Octave 时,您输入的最新命令(最多为 history_size 变量指定的数量)会保存到一个文件中。当 Octave 启动时,它会从变量 history_file 所指定的文件中加载一个初始命令列表。
以下是用于浏览和搜索历史列表的简单命令。
无论光标在何处,都接受当前行。如果该行非空,则将其添加到历史列表中。如果该行是一条历史行,则将其恢复到原始状态。
在历史列表中向上移动。
在历史列表中向下移动。
移动到历史记录的第一行。
移动到输入历史的末尾,即您正在输入的那一行!
从当前行开始向后搜索,并根据需要在历史中向上移动。这是一个增量搜索。
从当前行开始向前搜索,并根据需要在历史中向下移动。
在大多数终端上,您也可以使用向上和向下箭头键代替 C-p 和 C-n 在历史列表中移动。
除了用键盘命令在历史列表中移动之外,Octave 还提供了三个函数,用于查看、编辑和重新运行历史列表中的命令块。
opt1 … ¶H = history () ¶H = history (opt1, …) ¶如果不带参数调用,history 会显示您已执行的命令列表。
有效的选项有:
n-n仅显示最近的 n 行历史记录。
-c清除历史记录列表。
-q不要对显示的历史行进行编号。这对于使用 X Window 系统进行剪切和粘贴命令非常有用。
-r file读取文件 file,将其内容追加到当前历史记录列表中。如果省略文件名,则使用默认的历史文件(参见 history_file)。
-w file将当前历史记录写入文件 file。如果省略文件名,则使用默认的历史文件(参见 history_file)。
例如,要显示您键入的最新的五个命令而不显示行号,请使用命令 history -q 5。
如果使用单个输出参数调用,历史记录将保存到该参数(作为元胞字符串)中,而不会输出到屏幕。
cmd_number ¶first last ¶使用由变量 EDITOR 指定的编辑器来编辑历史记录列表。
要编辑的命令首先会被复制到一个临时文件中。当您退出编辑器时,Octave 会执行保留在文件中的命令。通常,使用 edit_history 来定义函数比直接在命令行上输入要更方便。一旦您退出编辑器,命令块就会立即执行。要避免执行任何命令,只需在离开编辑器之前从缓冲区中删除所有行即可。
当不传参调用时,编辑之前执行的命令;传入一个参数时,编辑指定的命令 cmd_number;传入两个参数时,编辑 first 和 last 之间的命令列表。命令编号也可以是负数,其中 -1 表示最近执行的命令。以下命令等价,都用于编辑最近执行的命令。
edit_history edit_history -1
使用范围时,如果为第一个命令指定的编号大于最后一个命令的编号,则会将命令列表反转后再放入要编辑的缓冲区。
另请参阅: run_history,history。
cmd_number ¶first last ¶从历史记录列表中运行命令。
当不传参调用时,运行之前执行的命令;
传入一个参数时,运行指定的命令 cmd_number;
传入两个参数时,运行 first 和 last 之间的命令列表。命令编号也可以是负数,其中 -1 表示最近执行的命令。例如,命令
run_history
OR
run_history -1
会再次执行最近的命令。命令
run_history 13 169
执行第 13 到第 169 条命令。
如果为第一个命令指定的编号大于最后一个命令的编号,则会在执行命令之前反转命令列表。例如:
disp (1) disp (2) run_history -1 -2 ⇒ 2 1
另请参阅: edit_history,history。
Octave 还允许您自定义历史记录保存的时间、位置和方式等细节。
val = history_save () ¶old_val = history_save (new_val) ¶old_val = history_save (new_val, "local") ¶查询或设置内部变量,该变量控制是否将在命令行中输入的命令保存到历史文件中。
当在函数内部以 "local" 选项调用时,该变量会局部更改,仅对该函数及其调用的任何子程序生效。退出函数时恢复原始变量值。
另请参阅: history_control,history_file,history_size,history_timestamp_format_string。
val = history_control () ¶old_val = history_control (new_val) ¶查询或设置用于指定如何将命令保存到历史记录列表的内部变量。
默认值为空字符串,但可能被 OCTAVE_HISTCONTROL 环境变量覆盖。
history_control 的值是一个冒号分隔的值列表,控制命令在历史记录列表中的保存方式。
如果值列表包含 ignorespace,则以空格字符开头的行不会保存到历史记录列表中。
如果值列表包含 ignoredups,则与前一条历史记录条目匹配的行不会被保存。
ignoreboth 是 ignorespace 和 ignoredups 的简写。
如果值列表包含 erasedups,则在保存当前行之前,会从历史记录列表中删除所有与当前行匹配的先前行。
任何不在上述列表中的值都将被忽略。
如果 history_control 是空字符串,则所有命令都保存到历史记录列表中,
但还受 history_save 的值的约束。
另请参阅: history_file,history_size,history_timestamp_format_string,history_save。
val = history_file () ¶old_val = history_file (new_val) ¶查询或设置内部变量,该变量指定用于存储命令历史记录的文件名。
在当前 Octave 会话期间发出的所有后续命令都将写入这个新文件(如果当前 history_save 的设置允许的话)。
默认值为 $DATA/octave/history,其中 $DATA 是平台相关的(漫游)用户数据文件位置(例如,$XDG_DATA_HOME,如果未设置,在类 Unix 操作系统上为 ~/.local/share,在 Windows 上为 %APPDATA%)。默认值可能被 OCTAVE_HISTFILE 环境变量覆盖。
编程说明:
如果您想永久更改 Octave 历史文件的位置,则需要在每个新的 Octave 会话中执行 history_file 命令。这可以通过使用 Octave 的 .octaverc 启动文件来实现。
如果您还想从这个不同的历史文件中读取过去 Octave 会话的已保存历史命令,则需要在设置历史文件的新值之后使用额外的命令 history -r。Octave 启动文件中执行此操作的示例代码可能如下所示:
history_file ("~/new/.octave_hist");
if (exist (history_file ()))
history ("-r", history_file());
endif
另请参阅: history,history_control,history_save,history_size,history_timestamp_format_string。
val = history_size () ¶old_val = history_size (new_val) ¶查询或设置内部变量,该变量指定要保存在历史文件中的记录数量。
默认值为 1000,但可能被 OCTAVE_HISTSIZE 环境变量覆盖。
另请参阅: history_file,history_timestamp_format_string,history_save。
val = history_timestamp_format_string () ¶old_val = history_timestamp_format_string (new_val) ¶old_val = history_timestamp_format_string (new_val, "local") ¶查询或设置内部变量,该变量指定 Octave 退出时写入历史文件的注释行的格式字符串。
格式字符串被传递给 strftime。默认值为
"# Octave VERSION, %a %b %d %H:%M:%S %Y %Z"
当在函数内部以 "local" 选项调用时,该变量会局部更改,仅对该函数及其调用的任何子程序生效。退出函数时恢复原始变量值。
val = EDITOR () ¶old_val = EDITOR (new_val) ¶old_val = EDITOR (new_val, "local") ¶查询或设置内部变量,该变量在使用 CLI 时指定默认文本编辑器。
默认值取自 Octave 启动时的 EDITOR 环境变量。如果该环境变量未初始化,则 EDITOR 将设置为 "emacs"。
注意: 此设置在运行 CLI 时生效。使用 Octave GUI 时,默认编辑器在"首选项"的"编辑器"选项卡中指定。
当在函数内部以 "local" 选项调用时,该变量会局部更改,仅对该函数及其调用的任何子程序生效。退出函数时恢复原始变量值。
另请参阅: edit,edit_history。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2