Vim大揭秘:Linux下编辑之道

欢迎来到我的博客,代码的世界里,每一行都是一个故事

Vim大揭秘:Linux下编辑之道

Vim大揭秘:Linux下编辑之道前言

在Linux的世界中,Vim是一位备受尊敬的编辑器大师。但对于初学者而言,Vim的陡峭学习曲线可能让人望而却步。本文旨在揭开Vim的神秘面纱,让你轻松掌握这个优雅的编辑器,享受编程的乐趣。

基础操作

好的,以下是 Vim 的基础操作:

进入 Vim: 打开终端。输入 vim,然后按 Enter 键。 退出 Vim: 在命令模式下(按 Esc 键确保进入命令模式),输入 :wq 并按 Enter 键,保存并退出。如果只想保存而不退出,可以输入 :w。若要强制退出而不保存,可以输入 :q!。 移动光标: 在命令模式下,使用以下键进行光标移动: h – 向左j – 向下k – 向上l – 向右你也可以使用箭头键进行移动。 插入文本: 在命令模式下,按 i 进入插入模式。在插入模式中,你可以开始键入文本。要返回命令模式,按 Esc 键。 删除文本: 在命令模式下,使用以下命令: x – 删除光标处的字符。dd – 删除整行。dw – 删除一个单词。d$ – 删除光标处到行尾的内容。

这是 Vim 的基础操作,初学者可能会觉得有些繁琐,但随着熟练度的提高,Vim 的效率和强大功能将更为明显。记得在使用时经常查看 Vim 的帮助文档,这会对学习有所帮助。

编辑模式与命令模式

在 Vim 中,有两种主要模式:命令模式和编辑模式。下面是切换、复制、粘贴和删除文本的一些建议:

切换模式: 从命令模式切换到编辑模式: 在命令模式下,按下 i 进入插入模式,此时光标会出现在当前位置。也可以按 I 进入插入模式,但光标会移到当前行的开头。 从编辑模式切换到命令模式: 在编辑模式中,按下 Esc 键,将光标切换回命令模式。复制、粘贴和删除: 复制文本: 在命令模式下,将光标移到要复制的起始位置。按 v 进入可视模式。使用光标键移动选择区域。按 y 复制选中的文本。 粘贴文本: 在命令模式下,将光标移到要粘贴的位置。按 p 粘贴之前复制的文本。 删除文本: 在命令模式下,将光标移到要删除的位置。使用 x 删除当前光标处的字符。使用 dd 删除整行。使用 dw 删除一个单词。使用 D 删除光标位置到行尾的内容。

这些是一些基本的复制、粘贴和删除操作。Vim 的可视模式和命令模式的配合可以让你更灵活地操作文本。请记住,Vim 有很多高级的编辑功能,可以通过查看 Vim 的帮助文档来了解更多详细信息。

vim的高级技巧

Vim 的高级技巧包括使用寄存器进行文本操作以及定义和执行宏。下面是一些相关的操作:

使用寄存器进行文本操作: 查看寄存器: 在命令模式下,输入 :registers 可以查看所有寄存器中的内容。 将文本复制到寄存器: 在可视模式下选择文本。输入 "ay 将选中的文本复制到寄存器 a 中。 从寄存器粘贴文本: 在插入模式或者命令模式下,输入 "ap 将寄存器 a 中的文本粘贴。定义和执行宏: 录制宏: 在命令模式下,按下 q 后紧跟寄存器名字(例如 qa)来开始录制宏。执行你的操作,然后按下 q 来停止录制。 执行宏: 在命令模式下,输入 @a 来执行宏 a。这将重复录制宏时的操作。 重复执行宏: 输入 @@ 来重复执行上一次使用的宏。 执行宏多次: 输入 3@a 来执行宏 a 三次。可以根据需要更改数字。

这些技巧可以使你更高效地处理文本。通过熟练掌握寄存器和宏的使用,你能够轻松地在 Vim 中处理复杂的编辑任务。请记住,Vim 的学习曲线较陡,慢慢熟悉这些高级技巧会让你受益匪浅。

插件与配置使用 Vim 插件扩展功能: 安装插件管理器: 有多个插件管理器可供选择,比如 vim-plugVundlePathogen 等。选择一个并按照其文档进行安装。 配置插件管理器: 在你的 ~/.vimrc(Vim 配置文件)中添加插件管理器的相关配置。 安装插件: 使用插件管理器,在配置文件中添加你想要安装的插件,然后运行插件管理器的安装命令。 常见插件命令: 在命令模式下,使用 :PluginInstall(对于 Vundle)或 :PlugInstall(对于 vim-plug)命令安装配置文件中指定的插件。编写和应用 Vim 的配置文件:

创建或编辑配置文件:

打开终端,输入 vim ~/.vimrc 来创建或编辑 Vim 的配置文件。

基本配置:

添加基本配置选项,如缩进设置、行号显示、颜色主题等。代码语言:javascript代码运行次数:0运行复制

set number        " 显示行号set tabstop=4     " 设置制表符宽度为 4set autoindent    " 自动缩进colorscheme desert " 使用 desert 颜色主题

配置插件:

在配置文件中使用插件管理器的相关语法配置你的插件。代码语言:javascript代码运行次数:0运行复制

" vim-plugcall plug#begin('~/.vim/plugged')Plug 'tpope/vim-fugitive'   " 例子:安装 vim-fugitive 插件call plug#end()

保存并退出:

在编辑模式下,按 Esc 进入命令模式,输入 :wq 保存并退出。

重新加载配置:

在 Vim 中,你可以输入 :source ~/.vimrc 来重新加载配置文件,使更改生效。

通过配置文件,你可以定制化 Vim 的外观和行为,而插件则为你提供了各种额外的功能和特性。根据个人需求选择和配置插件,使得 Vim 更符合你的工作流程。

搜索与替换

在 Vim 中进行搜索和替换是非常常见的操作。以下是一些搜索和替换的基本命令:

搜索关键词: 向前搜索: 在命令模式下,输入 / 后跟要搜索的关键词,然后按 Enter 键。使用 n 键跳到下一个匹配项,使用 N 键跳到上一个匹配项。 向后搜索: 在命令模式下,输入 ? 后跟要搜索的关键词,然后按 Enter 键。使用 n 键跳到上一个匹配项,使用 N 键跳到下一个匹配项。 取消搜索高亮: 在命令模式下,输入 :nohl 取消搜索结果的高亮显示。替换操作: 替换当前匹配项: 在命令模式下,将光标移到要替换的匹配项上。输入 :s/old/new/,其中 old 是要被替换的内容,new 是替换后的内容。添加 g 标志进行全局替换,如 :s/old/new/g。 替换整行: 使用 :s/^old/new/ 替换行首的匹配项。使用 :s/old$/new/ 替换行尾的匹配项。 全局替换: 使用 :%s/old/new/g 替换整个文件中的所有匹配项。添加 c 标志进行确认每个替换,如 :%s/old/new/gc。 替换指定范围: 例如,使用 :10,20s/old/new/g 替换第 10 行到第 20 行之间的匹配项。

这些是基本的搜索和替换命令,根据需要可以进行更高级的操作。请查阅 Vim 的帮助文档以获取更多详细信息。

多文件编辑

在 Vim 中,你可以使用多种方式来编辑多个文件,包括窗口(splits)和标签页(tabs)。以下是一些建议:

AI图像编辑器 AI图像编辑器

使用文本提示编辑、变换和增强照片

AI图像编辑器 46 查看详情 AI图像编辑器 使用窗口(Splits): 水平分割窗口: 在命令模式下,输入 :split:sp 来水平分割当前窗口。使用 Ctrl + W,然后按 hl 在水平分割的窗口之间切换。 垂直分割窗口: 在命令模式下,输入 :vsplit:vsp 来垂直分割当前窗口。使用 Ctrl + W,然后按 jk 在垂直分割的窗口之间切换。 关闭窗口: 在命令模式下,输入 :q 来关闭当前窗口。 调整窗口大小: 在命令模式下,可以使用 Ctrl + W,然后按 +- 来调整活动窗口的大小。使用标签页(Tabs): 新建标签页: 在命令模式下,输入 :tabnew:tabe 来新建一个标签页。在新标签页中输入 :edit filename 可以打开一个文件。 在标签页之间切换: 使用 gt 来移动到下一个标签页。使用 gT 来移动到上一个标签页。 关闭标签页: 在命令模式下,输入 :tabclose:tabc 来关闭当前标签页。 调整标签页顺序: 在命令模式下,输入 :tabm n 将当前标签页移动到第 n 个位置。 在标签页中分割窗口: 在标签页中可以使用和窗口分割相同的命令。

这些是在 Vim 中进行多文件编辑时使用的一些基本命令。你可以根据需要选择窗口或标签页来组织你的编辑环境。如果需要更多信息,可以查阅 Vim 的帮助文档。

vim的快捷键常用的 Vim 快捷键: 基本移动: h – 向左移动光标j – 向下移动光标k – 向上移动光标l – 向右移动光标 文本编辑: i – 进入插入模式a – 在光标后进入插入模式A – 在行尾进入插入模式o – 在当前行下方插入新行O – 在当前行上方插入新行 复制、粘贴和删除: y – 复制选中文本p – 粘贴文本dd – 删除当前行dw – 删除一个单词x – 删除当前光标处字符 撤销和重做: u – 撤销Ctrl + r – 重做 保存和退出: :w – 保存:q – 退出:wq – 保存并退出:x – 保存并退出(如果有修改) 搜索和替换: / – 向前搜索? – 向后搜索:s/old/new/g – 替换所有匹配项自定义快捷键:

.vimrc 文件中定义快捷键:

打开 Vim 配置文件,通常是 ~/.vimrc。使用 map 命令来定义快捷键。代码语言:javascript代码运行次数:0运行复制

" 示例:将 F2 映射为保存文件nnoremap  :w

使用函数定义复杂操作:

可以使用函数定义更复杂的操作,然后将快捷键映射到这些函数。代码语言:javascript代码运行次数:0运行复制

" 示例:定义一个函数实现删除当前行并保存function! DeleteAndSave()    normal! dd    wendfunctionnnoremap  :call DeleteAndSave()

使用 键:

键是一个占位符,可以在 .vimrc 中设置,默认是反斜杠 。使用 键可以避免与其他插件的冲突。代码语言:javascript代码运行次数:0运行复制

" 示例:将 s 映射为保存文件nnoremap s :w

重新加载配置文件:

在 Vim 中输入 :source ~/.vimrc 重新加载配置文件,使得更改生效。

通过自定义快捷键,你可以根据个人偏好和工作流程优化 Vim 的使用体验。注意要确保快捷键不会和其他插件或系统快捷键冲突。

vim定制化修改颜色主题:

选择颜色主题:

在 Vim 中,有许多颜色主题可供选择。你可以在网上找到并下载喜欢的主题。将主题文件保存到 ~/.vim/colors/ 目录下。

配置颜色主题:

打开你的 ~/.vimrc 文件。使用 colorscheme 命令设置你喜欢的颜色主题。代码语言:javascript代码运行次数:0运行复制

" 示例:使用 desert 颜色主题colorscheme desert

保存文件并在 Vim 中输入 :source ~/.vimrc 重新加载配置。配置 Vim 的显示和行为:

显示行号:

~/.vimrc 文件中添加以下行来显示行号:代码语言:javascript代码运行次数:0运行复制

set number

显示当前行和列:

~/.vimrc 文件中添加以下行来显示当前行和列:代码语言:javascript代码运行次数:0运行复制

set ruler

设置缩进:

~/.vimrc 文件中设置缩进,例如:代码语言:javascript代码运行次数:0运行复制

set tabstop=4set shiftwidth=4set expandtab

上述配置将 Tab 键展开为四个空格。

开启语法高亮:

~/.vimrc 文件中添加以下行来启用语法高亮:代码语言:javascript代码运行次数:0运行复制

syntax enable

显示匹配的括号:

~/.vimrc 文件中添加以下行来高亮显示匹配的括号:代码语言:javascript代码运行次数:0运行复制

set showmatch

自动补全:

通过插件(如 coc.nvimYouCompleteMe)来实现自动补全功能。代码语言:javascript代码运行次数:0运行复制

" 示例:使用 coc.nvim 插件Plug 'neoclide/coc.nvim', {'branch': 'release'}

然后运行 :PlugInstall 安装插件。

更改光标样式:

~/.vimrc 文件中添加以下行来更改光标样式:代码语言:javascript代码运行次数:0运行复制

set guicursor=a:block

上述配置将光标设置为块状。

设置背景颜色:

~/.vimrc 文件中添加以下行来设置背景颜色:代码语言:javascript代码运行次数:0运行复制

set background=dark

适用于暗色主题。

以上就是Vim大揭秘:Linux下编辑之道的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/428760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 12:49:33
下一篇 2025年11月7日 12:53:29

相关推荐

  • HTML、CSS 和 JavaScript 中的简单侧边栏菜单

    构建一个简单的侧边栏菜单是一个很好的主意,它可以为您的网站添加有价值的功能和令人惊叹的外观。 侧边栏菜单对于客户找到不同项目的方式很有用,而不会让他们觉得自己有太多选择,从而创造了简单性和秩序。 今天,我将分享一个简单的 HTML、CSS 和 JavaScript 源代码来创建一个简单的侧边栏菜单。…

    2025年12月24日
    200
  • 前端代码辅助工具:如何选择最可靠的AI工具?

    前端代码辅助工具:可靠性探讨 对于前端工程师来说,在HTML、CSS和JavaScript开发中借助AI工具是司空见惯的事情。然而,并非所有工具都能提供同等的可靠性。 个性化需求 关于哪个AI工具最可靠,这个问题没有一刀切的答案。每个人的使用习惯和项目需求各不相同。以下是一些影响选择的重要因素: 立…

    2025年12月24日
    000
  • 带有 HTML、CSS 和 JavaScript 工具提示的响应式侧边导航栏

    响应式侧边导航栏不仅有助于改善网站的导航,还可以解决整齐放置链接的问题,从而增强用户体验。通过使用工具提示,可以让用户了解每个链接的功能,包括设计紧凑的情况。 在本教程中,我将解释使用 html、css、javascript 创建带有工具提示的响应式侧栏导航的完整代码。 对于那些一直想要一个干净、简…

    2025年12月24日
    000
  • 布局 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在这里查看视觉效果: 固定导航 – 布局 – codesandbox两列 – 布局 – codesandbox三列 – 布局 – codesandbox圣杯 &#8…

    2025年12月24日
    000
  • 隐藏元素 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看隐藏元素的视觉效果 – codesandbox 隐藏元素 hiding elements hiding elements hiding elements hiding elements hiding element…

    2025年12月24日
    400
  • 居中 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看垂直中心 – codesandbox 和水平中心的视觉效果。 通过 css 居中 垂直居中 centering centering centering centering centering centering立即…

    2025年12月24日 好文分享
    300
  • 如何在 Laravel 框架中轻松集成微信支付和支付宝支付?

    如何用 laravel 框架集成微信支付和支付宝支付 问题:如何在 laravel 框架中集成微信支付和支付宝支付? 回答: 建议使用 easywechat 的 laravel 版,easywechat 是一个由腾讯工程师开发的高质量微信开放平台 sdk,已被广泛地应用于许多 laravel 项目中…

    2025年12月24日
    000
  • 如何在移动端实现子 div 在父 div 内任意滑动查看?

    如何在移动端中实现让子 div 在父 div 内任意滑动查看 在移动端开发中,有时我们需要让子 div 在父 div 内任意滑动查看。然而,使用滚动条无法实现负值移动,因此需要采用其他方法。 解决方案: 使用绝对布局(absolute)或相对布局(relative):将子 div 设置为绝对或相对定…

    2025年12月24日
    000
  • 移动端嵌套 DIV 中子 DIV 如何水平滑动?

    移动端嵌套 DIV 中子 DIV 滑动 在移动端开发中,遇到这样的问题:当子 DIV 的高度小于父 DIV 时,无法在父 DIV 中水平滚动子 DIV。 无限画布 要实现子 DIV 在父 DIV 中任意滑动,需要创建一个无限画布。使用滚动无法达到负值,因此需要使用其他方法。 相对定位 一种方法是将子…

    2025年12月24日
    000
  • 移动端项目中,如何消除rem字体大小计算带来的CSS扭曲?

    移动端项目中消除rem字体大小计算带来的css扭曲 在移动端项目中,使用rem计算根节点字体大小可以实现自适应布局。但是,此方法可能会导致页面打开时出现css扭曲,这是因为页面内容在根节点字体大小赋值后重新渲染造成的。 解决方案: 要避免这种情况,将计算根节点字体大小的js脚本移动到页面的最前面,即…

    2025年12月24日
    000
  • Nuxt 移动端项目中 rem 计算导致 CSS 变形,如何解决?

    Nuxt 移动端项目中解决 rem 计算导致 CSS 变形 在 Nuxt 移动端项目中使用 rem 计算根节点字体大小时,可能会遇到一个问题:页面内容在字体大小发生变化时会重绘,导致 CSS 变形。 解决方案: 可将计算根节点字体大小的 JS 代码块置于页面最前端的 标签内,确保在其他资源加载之前执…

    2025年12月24日
    200
  • Nuxt 移动端项目使用 rem 计算字体大小导致页面变形,如何解决?

    rem 计算导致移动端页面变形的解决方法 在 nuxt 移动端项目中使用 rem 计算根节点字体大小时,页面会发生内容重绘,导致页面打开时出现样式变形。如何避免这种现象? 解决方案: 移动根节点字体大小计算代码到页面顶部,即 head 中。 原理: flexível.js 也遇到了类似问题,它的解决…

    2025年12月24日
    000
  • 形状 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看 codesandbox 的视觉效果。 通过css绘制各种形状 如何在 css 中绘制正方形、梯形、三角形、异形三角形、扇形、圆形、半圆、固定宽高比、0.5px 线? shapes 0.5px line .square { w…

    2025年12月24日
    000
  • 有哪些美观的开源数字大屏驾驶舱框架?

    开源数字大屏驾驶舱框架推荐 问题:有哪些美观的开源数字大屏驾驶舱框架? 答案: 资源包 [弗若恩智能大屏驾驶舱开发资源包](https://www.fanruan.com/resource/152) 软件 [弗若恩报表 – 数字大屏可视化组件](https://www.fanruan.c…

    2025年12月24日
    000
  • 网站底部如何实现飘彩带效果?

    网站底部飘彩带效果的 js 库实现 许多网站都会在特殊节日或活动中添加一些趣味性的视觉效果,例如点击按钮后散发的五彩缤纷的彩带。对于一个特定的网站来说,其飘彩带效果的实现方式可能有以下几个方面: 以 https://dub.sh/ 网站为例,它底部按钮点击后的彩带效果是由 javascript 库实…

    2025年12月24日
    000
  • 网站彩带效果背后是哪个JS库?

    网站彩带效果背后是哪个js库? 当你访问某些网站时,点击按钮后,屏幕上会飘出五颜六色的彩带,营造出庆祝的氛围。这些效果是通过使用javascript库实现的。 问题: 哪个javascript库能够实现网站上点击按钮散发彩带的效果? 答案: 根据给定网站的源代码分析: 可以发现,该网站使用了以下js…

    好文分享 2025年12月24日
    100
  • 产品预览卡项目

    这个项目最初是来自 Frontend Mentor 的挑战,旨在使用 HTML 和 CSS 创建响应式产品预览卡。最初的任务是设计一张具有视觉吸引力和功能性的产品卡,能够无缝适应各种屏幕尺寸。这涉及使用 CSS 媒体查询来确保布局在不同设备上保持一致且用户友好。产品卡包含产品图像、标签、标题、描述和…

    2025年12月24日
    100
  • 如何利用 echarts-gl 绘制带发光的 3D 图表?

    如何绘制带发光的 3d 图表,类似于 echarts 中的示例? 为了实现类似的 3d 图表效果,需要引入 echarts-gl 库:https://github.com/ecomfe/echarts-gl。 echarts-gl 专用于在 webgl 环境中渲染 3d 图形。它提供了各种 3d 图…

    2025年12月24日
    000
  • 如何在 Element UI 的 el-rate 组件中实现 5 颗星 5 分制与百分制之间的转换?

    如何在el-rate中将5颗星5分制的分值显示为5颗星百分制? 要实现该效果,只需使用 el-rate 组件的 allow-half 属性。在设置 allow-half 属性后,获得的结果乘以 20 即可得到0-100之间的百分制分数。如下所示: score = score * 20; 动态显示鼠标…

    2025年12月24日
    100
  • CSS 最佳实践:后端程序员重温 CSS 时常见的三个疑问?

    CSS 最佳实践:提升代码质量 作为后端程序员,在重温 CSS/HTML 时,你可能会遇到一些关于最佳实践的问题。以下将解答三个常见问题,帮助你编写更规范、清晰的 CSS 代码。 1. margin 设置策略 当相邻元素都设置了 margin 时,通常情况下应为上一个元素设置 margin-bott…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信