关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

Vim文本编辑器基本操作

guanshanw 2023-09-26 12:18 23 浏览 0 评论

Vim(Vi IMproved)是一款强大的文本编辑器,广泛用于Unix和Linux系统。它具有高度可定制性和丰富的功能集,使其成为程序员、系统管理员和文本编辑爱好者的首选工具之一。

1、模式

正常模式(Normal Mode)

  • 正常模式是 Vim 的默认模式,它用于导航、编辑、复制和粘贴文本,以及执行各种命令。
  • 在正常模式下,按键被解释为命令,而不是直接插入文本。
  • 用于导航的键包括 h(左)、j(下)、k(上)、l(右),以及其他命令如 w(向前移动一个词)、b(向后移动一个词)、gg(跳转到文件开头)和 G(跳转到文件末尾)等。
  • 用于删除和复制文本的命令包括 x(删除字符)、dd(删除整行)、yy(复制整行)等。
  • 可以使用 : 进入命令模式,执行各种命令,如保存文件 :w、退出 :q 等。

插入模式(Insert Mode)

  • 插入模式用于输入文本,类似于普通文本编辑器的行为。
  • 进入插入模式的方式包括:
    • i:在光标前插入文本。
    • I:在当前行的开头插入文本。
    • a:在光标后插入文本。
    • A:在当前行的末尾插入文本。
    • o:在当前行的下方插入新行并进入插入模式。
    • O:在当前行的上方插入新行并进入插入模式。
  • 从插入模式返回正常模式通常使用 Esc 键。

可视模式(Visual Mode)

  • 可视模式允许选择文本块以进行操作,如复制、删除或替换。
  • 进入可视模式的方式包括:
    • v:按字符选择。
    • V:按行选择。
    • Ctrl + v:按块选择。
  • 一旦选择文本块,可以执行命令来操作选定的文本。

命令模式(Command-Line Mode)

  • 在正常模式下,键入冒号 : 进入命令模式,用于执行各种命令。
  • 常见的命令包括:
    • :w:保存文件。
    • :q:退出 Vim。
    • :q!:强制退出 Vim,放弃未保存的更改。
    • :wq:x:保存并退出。
    • :e:重新加载文件。
    • :r:在当前位置插入另一个文件的内容。
    • :set:配置 Vim 选项。

替换模式(Replace Mode)

  • 替换模式用于覆盖文本,逐字符替换已有文本。
  • 进入替换模式的方式包括:
    • R:按字符替换。
    • r:按需替换单个字符。

2、切换模式

从正常模式切换到插入模式

  • 插入模式用于在文本中输入或编辑内容,类似于普通文本编辑器的行为。
  • 在正常模式下,可以使用以下命令来切换到插入模式:
    • i:在光标前插入文本。
    • I:在当前行的开头插入文本。
    • a:在光标后插入文本。
    • A:在当前行的末尾插入文本。
    • o:在当前行的下方插入新行并进入插入模式。
    • O:在当前行的上方插入新行并进入插入模式。
  • 一旦进入插入模式,可以自由地键入文本,直到按下 Esc 键返回正常模式。

从正常模式切换到可视模式

  • 可视模式允许选择文本块以进行操作,如复制、删除或替换。
  • 在正常模式下,可以使用以下命令来切换到可视模式:
    • v:按字符选择。
    • V:按行选择。
    • Ctrl + v:按块选择。
  • 一旦进入可视模式,可以使用导航键来选择文本块,然后执行命令来操作选定的文本。

从插入模式返回正常模式

  • 从插入模式返回正常模式通常使用 Esc 键。按下 Esc 键会立即退出插入模式,并将光标定位回正常模式下的当前位置。

3、导航

基本导航命令

  • 使用以下键在正常模式下进行基本的导航:
    • h:将光标向左移动一个字符。
    • j:将光标向下移动一行。
    • k:将光标向上移动一行。
    • l:将光标向右移动一个字符。
  • 这些键在键盘上排列成一个类似箭头键的形状,以便记忆。

词级导航

  • Vim 允许以词为单位移动光标,而不是逐字符移动。以下是词级导航的常见命令:
    • w:将光标向前移动到下一个单词的开头。
    • b:将光标向后移动到当前单词的开头。
    • e:将光标移动到当前单词的末尾。
    • ge:将光标移动到前一个单词的末尾。

行级导航

  • 可以使用以下命令在行级别上导航:
    • 0(零):将光标移到当前行的开头。
    • $:将光标移到当前行的末尾。
    • ^:将光标移到当前行的第一个非空字符。

文件级导航

  • 可以使用以下命令在文件级别上导航:
    • gg:将光标移到文件的第一行。
    • G:将光标移到文件的最后一行。
    • :<行号>:将光标移到指定行号。

滚动导航

  • 可以使用以下命令进行滚动导航:
    • Ctrl + u:向上滚动半屏。
    • Ctrl + d:向下滚动半屏。
    • Ctrl + b:向上滚动一屏。
    • Ctrl + f:向下滚动一屏。

搜索导航

  • 搜索命令可以帮助您快速定位文本。在正常模式下,按 / 进入搜索模式,输入要搜索的文本,然后按 Enter 键开始搜索。使用 n 键和 N 键在搜索结果之间移动。

书签导航

  • 可以使用书签来标记文本的特定位置,然后轻松跳转到这些位置。以下是一些书签命令:
    • m<标记>:将光标位置标记为指定的 <标记>
    • ' 或 ````:跳转到上一个书签。
    • `:<标记>:跳转到指定的书签。

4、编辑文本

删除文本

  • 在正常模式下,可以使用以下命令来删除文本:
    • x:删除光标下的字符。
    • dd:删除整行。
    • D:删除从光标位置到行末的文本。
    • :n1,n2d:删除指定行范围(n1 到 n2)的文本。

复制和剪切文本

  • 在正常模式下,可以使用以下命令来复制和剪切文本:
    • yy:复制当前行。
    • y$:复制从光标位置到行末的文本。
    • p:粘贴之前复制或剪切的文本。
    • :n1,n2y:复制指定行范围(n1 到 n2)的文本。
    • :n1,n2d:剪切指定行范围(n1 到 n2)的文本。

粘贴文本

  • 在正常模式下,使用 p 命令可以粘贴最近复制或剪切的文本。粘贴操作会在光标位置后方插入文本。

替换文本

  • 在正常模式下,可以使用以下命令来替换文本:
    • r<字符>:用指定字符替换光标下的字符。
    • R:进入替换模式,可以连续替换多个字符,按 Esc 退出替换模式。

插入文本

  • 插入模式用于在文本中插入新内容。可以在正常模式下使用以下命令进入插入模式:
    • i:在光标前插入文本。
    • I:在当前行的开头插入文本。
    • a:在光标后插入文本。
    • A:在当前行的末尾插入文本。
    • o:在当前行的下方插入新行并进入插入模式。
    • O:在当前行的上方插入新行并进入插入模式。

撤销和重做

  • 在正常模式下,可以使用以下命令来撤销和重做操作:
    • u:撤销最后的操作。
    • Ctrl + r:重做操作(撤销的反操作)。

全局替换

  • 可以使用 :s 命令在文件中进行全局替换操作。例如,:s/old/new/g 将文件中的所有 old 替换为 new

多光标编辑

  • Vim 支持多光标编辑,可以使用 Ctrl + v 进入可视块模式,选择多个光标位置,然后同时编辑这些位置的文本。

5、搜索和替换

搜索文本:

  • 正向搜索:在正常模式下,按 / 进入搜索模式。输入要搜索的文本,然后按 Enter 键开始搜索。使用 n 键移动到下一个匹配项,使用 N 键移动到上一个匹配项。
  • 反向搜索:在正常模式下,按 ? 进入反向搜索模式。输入要搜索的文本,然后按 Enter 键开始反向搜索。使用 n 键移动到上一个匹配项,使用 N 键移动到下一个匹配项。
  • 高亮匹配项:默认情况下,Vim 会高亮匹配的文本。若要关闭或打开高亮显示,可以在正常模式下使用 :set hlsearch:set nohlsearch 命令。
  • 搜索选项:可以在搜索命令中使用一些选项,如 /pattern/i 可以忽略大小写,/pattern/n 可以禁用正则表达式匹配。
  • 搜索下划线和其他特殊字符:如果要搜索下划线等特殊字符,可以使用 \ 进行转义,例如 /my\_variable/
  • 使用寻找命令:在正常模式下,按 * 可以寻找光标下的单词,然后使用 # 寻找上一个匹配项。

替换文本:

  • 替换当前匹配项:在正常模式下,可以使用 :s 命令来替换当前匹配项。例如,要将当前单词 old 替换为 new,可以输入 :s/old/new/
  • 全局替换:若要替换文件中的所有匹配项,可以在替换命令中使用 g 标志,如 :%s/old/new/g
  • 替换并确认:若要逐个确认替换每个匹配项,可以在替换命令中使用 c 标志,如 :%s/old/new/gc
  • 替换范围内的文本:可以使用 :n1,n2s 命令来替换指定行范围内的文本。例如,:10,20s/old/new/g 会在第 10 行到第 20 行之间进行全局替换。
  • 替换回退:Vim 会在替换操作之前自动创建一个回退点,以便可以撤销替换。在正常模式下,可以使用 u 命令来撤销替换。
  • 替换确认:在替换模式下,可以按下 y 来确认替换当前匹配项,按下 n 来跳过当前匹配项。
  • 替换和保存:如果想在替换文本的同时保存文件,可以使用 :w 命令,如 :%s/old/new/g | w

6、多窗口

打开和关闭窗口:

  • 水平分屏:在正常模式下,可以使用以下命令来创建水平分屏窗口:
    • :split <文件路径>:创建水平分屏窗口并打开指定文件。
    • :splitCtrl + w 之后按 s:创建水平分屏窗口,将当前文件分为上下两个部分。
  • 垂直分屏:在正常模式下,可以使用以下命令来创建垂直分屏窗口:
    • :vsplit <文件路径>:创建垂直分屏窗口并打开指定文件。
    • :vsplitCtrl + w 之后按 v:创建垂直分屏窗口,将当前文件分为左右两个部分。
  • 关闭窗口
    • 在窗口中,可以使用以下命令关闭当前窗口:
      • :q:关闭当前窗口。
      • :q!:强制关闭当前窗口并放弃更改。
      • :wq:x:保存并关闭当前窗口。
    • 若要在不关闭 Vim 实例的情况下关闭所有窗口,请使用 :qall

切换窗口:

  • 切换焦点:在多窗口环境中,可以使用以下命令切换焦点到不同的窗口:
    • Ctrl + w,然后按 Ctrl + w:循环切换焦点到下一个窗口。
    • Ctrl + w,然后按 hjkl:将焦点分别切换到左、下、上、右的窗口。
  • 切换窗口布局:可以使用以下命令更改窗口布局:Ctrl + w,然后按 R:旋转当前窗口布局,将水平分屏转为垂直分屏或反之。

调整窗口大小:

  • 调整窗口大小:在多窗口中,可以使用以下命令调整窗口大小:
    • Ctrl + w,然后按 <>:增加或减少当前窗口的宽度。
    • Ctrl + w,然后按 +-:增加或减少当前窗口的高度。
  • 均等分屏:如果希望均等分割窗口,可以使用以下命令:Ctrl + w,然后按 =:将所有窗口均等分布在 Vim 窗口中。

多文件操作:

  • 打开多个文件:在 Vim 中可以同时打开多个文件。例如,可以在命令行中运行 vim file1.txt file2.txt 来同时打开两个文件。
  • 在窗口之间复制粘贴:在多窗口中,可以使用 :sp:vsp 命令来将一个窗口中的内容复制到另一个窗口。

7、配置文件

创建和编辑配置文件:

  • 创建配置文件:如果系统上尚不存在 .vimrc 文件,可以使用文本编辑器创建一个。在终端中运行以下命令:touch ~/.vimrc
  • 编辑配置文件:使用文本编辑器打开 .vimrc 文件,例如:vim ~/.vimrc,可以在配置文件中添加和编辑各种配置选项,以自定义 Vim 的行为。

配置选项:

  • 缩进设置:设置 tabstopshiftwidthexpandtab 选项来控制缩进的方式。例如:set tabstop=4 set shiftwidth=4 set expandtab
  • 行号和列号:启用行号和列号的显示,使得在编辑时更容易定位位置。例如:set number set relativenumber
  • 自动缩进:启用自动缩进,以便在插入模式中自动进行适当的缩进。例如:set autoindent
  • 语法高亮:启用语法高亮以提高代码的可读性。例如:syntax enable
  • 主题和颜色:使用不同的颜色方案来改变 Vim 的外观。例如:colorscheme desert
  • 搜索设置:配置搜索选项,如忽略大小写、高亮显示匹配项等。例如:set ignorecase set smartcase set hlsearch
  • 显示设置:配置 Vim 显示的一些选项,如行末空格可视化、显示光标当前位置等。例如:set list set showmatch
  • 键映射和快捷键:创建自定义键映射和快捷键,以加快编辑操作。例如:nnoremap <C-n> :NERDTreeToggle<CR>
  • 插件管理器设置:如果使用插件管理器(如 vim-plug、Vundle 等),可以在配置文件中添加插件列表和设置。例如:

call plug#begin('~/.vim/plugged')

Plug 'tpope/vim-fugitive'

call plug#end()

保存和应用配置:

  • 保存配置文件:在编辑完 .vimrc 文件后,使用 :w 命令保存更改。
  • 应用配置:在 Vim 中编辑 .vimrc 文件后,可以使用以下命令使配置生效,而无需退出 Vim::source ~/.vimrc,或者可以重新启动 Vim 以应用新的配置。

8、插件

安装插件:

  • Vim-Plug:Vim-Plug 是一个流行的插件管理器,易于安装和使用。可以在 .vimrc 文件中添加插件列表,然后运行 :PlugInstall 命令来安装插件。
  • Vundle:Vundle 是另一个常见的插件管理器,它也使用 .vimrc 配置文件来管理插件。可以使用 :PluginInstall 命令来安装插件。
  • Pathogen:Pathogen 是一种更传统的插件管理器,它允许将每个插件放置在单独的目录中,并通过简单地将插件目录添加到 Vim 的运行时路径中来加载插件。

常见插件用途:

  • 代码编辑插件
    • 代码编辑插件可用于增强编程体验,包括语法高亮、代码折叠、自动完成、代码片段、代码导航等功能。一些流行的代码编辑插件包括:
      • vim-airline:自定义状态栏。
      • YouCompleteMe:强大的自动完成和代码建议插件。
      • NerdTree:文件树浏览器。
  • 主题和外观插件
    • 主题和外观插件用于改变 Vim 的外观,包括颜色方案、状态栏、行号等。一些主题插件包括:
      • gruvbox:受欢迎的暗色调主题。
      • solarized:另一个受欢迎的颜色方案。
      • lightline:轻量级状态栏插件。
  • 文件管理和导航插件
    • 文件管理和导航插件用于更轻松地浏览和管理文件系统。一些文件管理插件包括:
      • NERDTree:文件树浏览器。
      • CtrlP:快速文件搜索和切换插件。
      • fzf:模糊文件搜索和快速查找插件。
  • 版本控制插件
    • 版本控制插件用于与版本控制系统(如 Git)集成,以在 Vim 中管理代码库。一些版本控制插件包括:
      • vim-fugitive:强大的 Git 插件。
      • GitGutter:显示行内 Git 状态信息。
  • 文本处理和编辑插件
    • 文本处理和编辑插件用于执行各种文本操作,如文本搜索、替换、排序和格式化。一些文本处理插件包括:
      • Ag:快速搜索文本。
      • Surround:快速添加、更改和删除文本周围的符号。
      • vim-easymotion:快速移动光标。

9、在线帮助

:help 命令:

  • 在 Vim 中,可以随时使用 :help 命令来访问在线帮助系统。只需在正常模式下键入 :help,然后输入想要了解的主题、命令或选项的名称,然后按 Enter 键。例如:
  • :help:打开帮助索引。
  • :help :w:查看 :w 命令的帮助。
  • :help insert-mode:查看插入模式的帮助。

帮助索引

  • :help 命令将打开帮助索引,该索引包含了关于 Vim 的广泛文档。可以使用以下键盘命令来导航和查找帮助文档:
  • 使用上下箭头键或 jk 键在不同主题之间导航。
  • Ctrl + ] 键跳转到当前选定主题的详细信息。
  • Ctrl + t 键返回到上一个主题。
  • 使用 / 键来搜索关键字,然后按 Enter 键查找匹配项。
  • 使用 :q 命令退出帮助系统。

帮助标签页

  • 帮助系统支持多个标签页,允许在不同主题之间切换。以下是一些常用的标签页命令:
  • :help tab-page:打开标签页帮助。
  • :tabnew:help :tabnew:打开新标签页。
  • :tabnext:tabprev:在标签页之间切换。
  • :tabclose:q:关闭当前标签页。

特定主题的帮助

  • 如果知道自己想要查看特定主题的帮助,可以直接使用 :help 命令,后跟主题名称。例如:
  • :help motions:查看有关移动命令的帮助。
  • :help text-objects:查看有关文本对象(如单词、段落等)的帮助。

内置教程

  • Vim 带有一些内置教程,可以通过 :vimtutor 命令启动。这是一个交互式的教程,可以帮助新用户学习 Vim 的基本功能。

离线帮助

  • 如果使用的是 Vim 的源代码分发版本,通常会包含完整的离线帮助文档。这些文档可以在本地查看,无需互联网连接。

这些是 Vim 的基本概念和一些常用命令,Vim 具有丰富的功能和命令,允许用户高效地编辑文本。要充分发挥 Vim 的威力,需要不断练习和学习,并逐渐掌握更高级的功能和定制选项。可以在Vim内部查看帮助文档来深入了解其功能和用法。


相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: