一、vi/vim的三种模式
vi编辑器有三种模式:命令模式(command mode)、插入模式(Insert mode)、底行模式(last line mode)。就是你直接用命令(vi 文件名)打开一个文件的话,默认是在命令模式下。命令模式下是不能直接编辑文本的,你输入的字母会被当作命令执行。比如输入i,是指在当前光标前输入,并且切换到插入模式。在插入模式下你就可以进行文本的编辑。插入模式下你按Esc可以返回命令模式。在命令模式下,通过输入:(英文冒号)可以切换到底行模式,底行模式下可以做一些保存,字符替换等操作,底行模式下命令以回车结束,退出或者返回命令模式,或者双击Esc返回命令模式。比如wq再回车,表示保存并退出编辑。插入模式和底行模式不能直接切换,要经由命令模式。进入底行模式,底部会出现冒号提示;进入插入模式,底部会出现--INSERT--提示。如果没有,先进入底行模式,输入set showmode+回车 即可显示提示。
二、vi/vim的基本命令
1.vi基本语法:vi [选项] [参数]
选项:
+<行号>:从指定行号的行开始先是文本内容; -b:以二进制模式打开文件,用于编辑二进制文件和可执行文件; -c<指令>:在完成对第一个文件编辑任务后,执行给出的指令; -d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分; -l:使用lisp模式,打开“lisp”和“showmatch”; -m:取消写文件功能,重设“write”选项; -M:关闭修改功能; -n:不实用缓存功能; -o<文件数目>:指定同时打开指定数目的文件; -R:以只读方式打开文件; -s:安静模式,不现实指令的任何错误信息。
参数:
文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。
2.不同模式下的语法
----命令模式:----
1)粘贴复制删除等操作
yy 复制光标所在行 2yy 复制光标所在行开始的2行 p 粘贴 dd 删除光标所在行(实际是剪切) 3dd 删除光标所在行开始的3行(剪切) x 删除当前光标所在的字符 X(大写) 删除当前光标前一个字符
2)光标的移动
h 左移 j 下移 k 上移 l 右移 (四个箭头也可以上下左右移动)
H 当前屏幕第一行 M 当前屏幕中间 L 当前屏幕最后一行
ctrl+f 往下翻页 ctrl+b 往上翻页
G 定位到最后一行(整个文档最后一行) 5G 定位到第5行 gg 定位到第一行(整个文档第一行)
w 跳到下一个头部单词 b 跳到上一个单词 e 跳到下一个单词的尾部
0 行首 ^ 行首,非空字符 $ 行尾
{ 移动到上一个代码块 } 移动到下一个代码块
3)编辑模式及末行模式等其他模式的入口
插入模式(INSERT MODE) a 在光标后一位进行插入编辑 A 在当前行的最后进行插入编辑 i 在当前光标的前一位进行插入编辑 I 在当前行的行首进行插入编辑 o 在当前行向下插入一行进行编辑 O 在当前行向上插入一行进行编辑
选择模式(VISUAL MODE) v 以字符为单位进行选择 V 以行为单位进行选择 ctrl+v 以块为单位进行选择
替换模式(REPLACE MODE) r 单次替换 R 替换模式
扩展模式 用于文件操作,搜索 : /
4)其他
u 撤销 ctrl+r 反撤销(撤销u操作)
----底行模式:----
末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。
:w 保存 :q 退出 :q! 强制退出(放弃对文档的修改内容) :wq! 强制保存退出
:set nu 显示行号 :set nonu 不显示行号
:命令 执行该命令 :整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one替换成two :s/one/two/g 将当前光标所在行的所有one替换成two :%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串 /字符串 在文本中从上至下搜索该字符串
---编辑模式:----
用vim随意进入一个文件按‘a’即可进入输入模式,输入模式下,可任意输入无特别要求,和Windows的文本编辑操作基本相同。
注:在命令模式中按“a”跳入下一格,按“i”保持原位置,按“o”跳入下一行
原文:https://blog.csdn.net/yuchenxueyue/article/details/82761050
https://blog.csdn.net/xing851483876/article/details/84553945