# ex命令 `ex`命令用于在`Ex`模式下启动`vim`文本编辑器,`ex`执行效果如同`vi -e`,如要从`Ex`模式回到普通模式,则在`vim`中输入`:vi`或`:visual`指令即可,可以通过运行`vi -e`来启动`ex`,也可以通过运行`ex -v`来启动`vi`,`ex`是`vim`的基础,`vim`是世界上最受欢迎的文本编辑器之一。`ex`并不是另一个编辑器,应该说`vi`是更一般更基本的`ex`行编辑器的可视模式,所以`ex`算是`vi`的底层行编辑器。由于一些`ex`命令可以节省大量的编辑时间,因此在使用`vi`时它们是非常有用的,这些命令的大部分都可以在不离开`vi`的情况下使用。 ## 语法 ```shell ex [ -| -s ] [ -l ] [ -L ] [ -R ] [ -r [ file ] ] [ -t tag ] [ -v ] [ -V ] [ -x ] [ -wn ] [ -C ] [ +command | -c command ] file ``` ## 参数 * `--`: 此后仅文件名。 * `-v`: 在`vi`模式下启动`vim`。 * `-e`: 在`ex`模式下启动`vim`。 * `-E`: 以改进的`ex`模式启动`vim`。 * `-s`: 沉默模式,仅当以`Ex`开头或在`-s`选项之前给出`-e`选项时生效。 * `-d`: 以`diff`模式启动,应该有两个或三个文件名参数,`vim`将打开所有文件并显示它们之间的差异,像`vimdiff`一样工作。 * `-y`: 以简单模式启动`vim`,类似于`evim`或`eview`,使`vim`的行为像单击并键入编辑器。 * `-R`: 只读模式,将设置`readonly`选项,此时仍然可以编辑缓冲区,但将防止意外覆盖文件。如果仍要覆盖文件,请在`Ex`命令中使用`w!`。 * `-Z`: 限制模式,类似于`rvim`。 * `-m`: 禁止修改文件,重置写入选项,此时仍然可以修改缓冲区,但不可写入文件。 * `-M`: 不允许修改,可修改和写入选项将被取消设置,因此不允许进行更改并且无法写入文件。请注意,可以设置这些选项以进行修改。 * `-b`: 二进制模式,将设置一些选项,以便可以编辑二进制文件或可执行文件。 * `-l`: `Lisp`模式,将`lisp`和`showmatch`选项设置为开。 * `-C`: 兼容的,设置`兼容`选项,这将使`vim`的行为与`vi`类似,即使存在`.vimrc`文件。 * `-N`: 不兼容模式,重置兼容选项,即使`.vimrc`文件不存在,这也会使`vim`表现得更好,但与`vi`的兼容性较差。 * `-V[N][fname]`: 详细信息,提供有关哪些文件来源以及用于读取和写入`viminfo`文件的消息,可选数字`N`是详细的值,默认值是`10`。 * `-D`: 调试模式,从脚本执行第一个命令时转到调试模式。 * `-n`: 不会使用交换文件,这样崩溃后的恢复将是不可能的。如果要在非常慢的介质例如软盘上编辑文件,此功能非常方便。 * `-r`: 列出交换文件,以及有关使用它们进行恢复的信息。 * `-r `: 恢复模式,交换文件用于恢复崩溃的编辑会话,交换文件与附加`.swp`的文本文件具有相同的文件名。 * `-L`: 与`-r`相同。 * `-A`: 如果`vim`是在阿拉伯语支持下编译的,用于编辑从右向左的文件和阿拉伯语键盘映射,则此选项将以阿拉伯语模式启动`vim`,即设置`ARABIC`,否则将发出错误消息,`vim`将中止。 * `-H`: 以希伯来语模式启动。 * `-F`: 以波斯语模式开始。 * `-T `: 告诉`vim`正在使用的终端的名称,仅在自动方式无效时才需要,应该是`vim`内置已知的终端,或在`termcap`或`terminfo`文件中定义的终端。 * `--not-a-term`: 输入或输出不是终端时跳过警告。 * `-u `: 使用文件`.vimrc`中的命令进行初始化,将跳过所有其他初始化。使用此选项可编辑特殊类型的文件,也可以用来跳过所有的初始化,方法是给名称`NONE`。 initialization”。 * `--noplugin`: 跳过加载插件,由`-u`表示无。 * `-p[N]`: 打开`N`个标签页,如果省略`N`,则为每个文件打开一个标签页。 * `-o[N]`: 打开堆叠的`N`个窗口,当省略`N`时,为每个文件打开一个窗口。 * `-O[N]`: 并排打开`N`个窗口,如果省略`N`,则为每个文件打开一个窗口。 * `+`: 从文件末尾开始。 * `+`: 对于第一个文件,光标将定位在`num`行上。如果缺少`num`,则光标将位于最后一行。 * `--cmd `: 在加载任何`.vimrc`文件之前执行``。 * `-c `: 加载第一个文件后执行``。 * `-S `: 加载第一个文件后源文件的``。 * `-s `: 从文件``中读取普通模式命令。 * `-w `: 将所有键入的命令附加到文件``。 * `-W `: 将所有键入的命令写入文件``。 * `-x`: 编辑加密文件。 * `--startuptime `: 将启动定时消息写入``。 * `-i `: 使用``而不是`.viminfo`。 * `-h or --help`: 输出帮助信息。 * `--version`: 输出版本信息。 ## 示例 对`file.txt`启动`ex`编辑模式。 ```shell ex file.txt ``` 显示总行数、当前行号。 ```shell = | .= ``` 打印文件前`3`行内容。 ```shell 1,3 p ``` 删除第`1`到第`2`行,切换回`vi`模式查看效果。 ```shell 1,2 d vi ``` 移动第`1`、`2`行到第`3`行下边。 ```shell 1,2 m 3 vi ``` 复制第`1`、`2`行到第`3`行下边。 ```shell 1,2 co 3 vi ``` ## 每日一题 ``` https://github.com/WindrunnerMax/EveryDay ``` ## 参考 ``` https://www.computerhope.com/unix/uex.htm https://www.runoob.com/linux/linux-comm-ex.html https://www.cnblogs.com/dasn/articles/5240991.html https://www.tutorialspoint.com/unix_commands/ex.htm https://blog.csdn.net/u013408061/article/details/77853130 https://www.geeksforgeeks.org/ex-command-in-linux-with-examples/ ```