Skip to content

Vi&vim 编辑器

基本操作

基本的保存和退出操作

:wq 和 :wq! 的区别

  • 如果文件设置为只读了的话,用 :wq命令是不能保存并退出的;但是最高权限者可通过:wq!来进行文件的保存并退出文件。
  • !是强制执行,如果不带!碰上只读文件,会给提示会是只读文件,带了!忽略只读强制写入。

:x 和 :wq 的区别

  • :wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
  • :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。

所以用 vi a.txt 编辑时,如果 a.txt 文件还是不存在且没有编辑任何内容的情况下,wq 退出会创建 a.txt,而用 :x 退出的话不会创建。

:q 和 :q! 的区别

  • 如果文件有修改,:q 会提示有修改,是否退出,输入y退出。
  • 如果文件有修改,:q! 会强制直接退出,并且不对文件进行保留。

注:在正常模式下按组合键shift zz可以保存并退出。

搜索

命令行模式下输入 / + 搜索内容,例如搜索单词 java 命令为 /java,按 n 跳转到下一个匹配字符位置,按 N 跳转到上一个匹配字符位置。

模式

命令行模式 (command mode/一般模式)

打开文件默认就是命令行模式,任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式。

若输入的字符不是Vi的合法命令,vi会响铃报警。

文本输入模式 (input mode/编辑模式)

在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。

末行模式 (last line mode/指令列命令模式)

也称转义模式。

用户按“:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。

进阶使用

多行编辑

ctrl + v 进入 visual block 模式。

  • 多行部分列删除:光标移动选中范围,按 d 键删除。
  • 多行全部删除:esc 模式下,比如输入 :1,5d 回车,删除的是1到5行。
  • 行首插入:若是行首多行插入,光标选中多行,按 shift + i 进入编辑,输入文本,按 esc 退出应用到多行。
  • 行尾插入:$ (也就是shift + 4)跳到行尾,移动光标选中多行,shift + a 进入编辑,输入文本,按 esc 退出应用到多行。

文件浏览器和打开多个文件

vim 命令进入编辑器,如果安装的是 neovim,可以看到 neovim 的版本信息。

:Explore 目录 可以打开文件浏览器,可以在其中切换目录和打开文件。

  • R 键可以重命名光标选中的文件;
  • D 键提示是否删除光标选中的文件;
  • \ 键可以在文件列表中查找文件。

选择一个文件打开,编辑后可使用 :w 保存,如果是直接退出就是普通的 :q 或者一起操作 :wq,如果只是想保存后返回文件浏览器按快捷键 ctrl + o

在同一界面打开多个文件

在编辑文件的时候,可以在同一界面下打开多个 layout,:split 文件 是在水平底部新开窗口打开文件,:vsplit 文件 是在垂直方向新开窗口打开文件。

可以使用先按 ctrl + w 再按方向键跳转到相应的左右上下窗格, ctrl + 6 在当前窗格切换到下一个文件。

若文件中有绝对或相对路径链接连接到文件,可以在命令行模式下把光标移动到链接上按 gf (go file)就可以跳转到相应的文件,甚至如果是外部网页超链接会打开下载网页的 html 文件。

选项卡打开多个文件

进入vim前

vim -p <文件名> 以多标签形式打开文件。如vim -p * 就是编辑当前目录的所有文件

vim编辑中

:tabnew 增加一个标签
:tabc 关闭当前的tab
:tabo 关闭所有其他的tab
:tabs 查看所有打开的tab
:tabp 或gT 前一个
:tabn 或gt 后一个

新建标签页

:tabe <文件名> 在新标签页中打开指定的文件。
:tabnew <文件名> 在新标签页中编辑新的文件。
:tab split 在新标签页中,打开当前缓冲区中的文件。
:tabf 允许你在当前目录搜索文件,并在新标签页中打开。比如 :tabf img.*。此命令只能打开一个文件。 Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。

列示标签页

:tabs 显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。

注:g-ctrl-g 意思是先按 g,再按 ctrl + g。

参考

IdeaVim快捷键参考

https://blog.csdn.net/u011118321/article/details/85095670

https://cloud.tencent.com/developer/article/1647068

相关

neovim 的使用