原文:https://www.cnblogs.com/wf-sk...Vim是一个众所周知的类似于Vi的强大且高度可定制的文本编辑器,在Vi的基础上改进了许多特性并补充道。VIM是免费软件。Vim通常被誉为类Vi编辑器中最好的,事实上真正的竞争对手来自Emacs的不同变体。1999年,Emacs被选为Linuxworld文本编辑类别的冠军,Vim位居第二。但在2000年2月,Vim获得了SlashdotBeanie的最佳开源文本编辑器奖,将Emacs推到了二线。总的来说,Vim和Emacs在文本编辑方面都非常出色。vim[argument][file..]编辑指定文件或:vim[argument]-从标准输入读取文本或:vim[argument]-ttag编辑定义标签的文件或:vim[argument]-q[errorfile]Edit发生第一个错误的文件。参数:-- 后面只有文件名-v Vi模式(同"vi")-e Ex模式(同"ex")-E改进的Ex模式-s 安静(批处理)模式(只能与“ex”一起使用)-d Diff模式(与“vimdiff”相同)-y easy模式(与“evim”相同,无模式)-R 只读模式(与“view”相同)-Z 受限模式(与“rvim”相同)-m 不可修改(写入文件)-M 文本不可修改-b 二进制模式-l Lisp模式-C 兼容传统Vi:'compatible'-N 不完全兼容传统Vi:'nocompatible'-V[N][fname]冗长[levelN][logmessagestofname]-D 调试模式-n 不使用交换文件,只使用内存-r 列出交换文件并退出-r(跟随文件名) 恢复崩溃的会话-Lsame-r-A 以阿拉伯语模式启动-H 以希伯来语模式启动-F 以波斯语模式启动-T 设置终端类型For--not-a-term跳过输入/输出的警告不是终端-u 使用替换任何.vimrc--noplugin 不加载插件脚本-P[N] 打开N个标签页(默认:每个文件一个)-o[N] 打开N个窗口(默认:每个文件一个)-O[N] 和-o一样但是垂直分割+ start跳到文件末尾+ 启动后跳转到行--cmd 在加载任何vimrc文件之前执行 -c 在加载第一个文件之后执行 -S 在加载第一个文件之后执行文件 -s 命令到从文件读取到普通模式 -w 将所有输入命令附加到文件 -W 将所有输入命令写入文件 -x 编辑加密文件 --startuptime将启动时间消息写入 -i 使用而不是.viminfo -h或--help 打印帮助(此信息)并退出 --version 打印版本信息并退出编辑器模式:Vi有三种基本的工作模式:命令行模式在任何时候,无论用户处于什么模式,只要按下ESC键就可以使Vi进入命令模式;我们在shell环境下输入启动Vi的命令(提示符是$),进入编辑器也是这种模式。在这种模式下,用户可以输入各种合法的Vi命令来管理自己的文档。此时,从键盘输入的任何字符都被解释为编辑命令。如果输入的字符是合法的Vi命令,Vi接受用户命令后将完成相应的动作。但需要注意的是,输入的命令不会显示在屏幕上。如果输入的字符不是Vi的有效命令,Vi将发出警报。文本输入模式在命令模式下,输入插入命令i、追加命令a、打开命令o、修改命令c、替换命令r或替换命令s,即可进入文本输入模式。在这种模式下,用户输入的任何字符都被Vi保存为文件的内容并显示在屏幕上。在文本输入过程中,如果要返回命令模式,按ESC即可。末行模式末行模式也称为ex转义模式。在命令模式下,用户可以按“:”键进入末行模式。这时,Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示。等待用户输入命令。大多数文件管理命令都是在这种模式下执行的(比如将编辑缓冲区的内容写入文件等)。执行完最后一个命令后,Vi自动返回到命令模式。例如::spnewfile分割一个窗口来编辑newfile。如果要从命令模式切换到编辑模式,可以输入命令a或i;如果您需要从文本模式返回,只需按Esc键。在命令模式下输入“:”切换到末行模式,然后输入命令。进入插入模式:i:在光标前插入一个字符I:插入行首a:在光标后插入一个字符A:插入行尾o:向下开新行,插入行首O:向上开新行,插入行首进入命令模式:ESC:从插入模式或末行模式进入命令模式移动光标:h:左移j:下移k:上移l:移动rightM:将光标移动到中间行L:将光标移动到屏幕最后一行FirstG:移动到指定行,行号-Gw:一次向后移动一个单词b:向前移动一个单词atime{:逐段移动,上移}:逐段移动,下移Ctr-d:向下滚动半屏Ctr-u:向上翻半屏Ctr-f:向下翻一屏Ctr-b:向上翻一屏gg:将光标移动到文件开头G:将光标移动到文件结尾删除命令:x:删除光标后一个字符,相当于DelX:删除光标前一个字符,相当于Backspacedd:删除光标所在行,ndd删除指定行数D:删除光标后行的所有内容,包括光标所在的字符d0:删除光标前行的所有内容内容,不包括光标所在的字符dw:删除光标起始位置的单词,包括光标所在的字符>:将文本行向右移动<<:将文本行向左移动复制粘贴:yy:复制当前行,nyy复制n行p:在光标位置向下新建一行,粘贴可视化模式:v:按字符移动,选中文本V:按行移动,可视化模式选中的文本可以配合d、y、>>、<<实现文本块的删除、复制、左右移动和替换:r:替换当前字符R:替换光标后的当前行字符搜索命令:/:strsearchn:nextN:previousreplacementcommand:replaceallabcwith123lastlinemode,replaceallabcinthecurrentfilewith123:%s/abc/123/glastlinemode,replace第一行到第10行之间的abc为123:1,在10s/abc/123/gvim中执行shell命令:enter!在最后一行模式下,然后是命令
