草庐IT

三分钟学会用Vim

暴躁小程序猿 2023-10-03 原文

Vim知识点

目录

一:什么是vim

vim最小集

vim是一款多模式的编辑器—各种模式—每种模式的用法有差别—每种模式之间可以互相切换

但是我们最常用的就是3~5个模式

vim就是一个单纯的编辑器

注意事项:

1.如果你知道自己目前所处的是什么模式,直接无脑ESC

2.退出的时候,一般先保存后退出

3.vim操作,不要用鼠标

要进入vim我们直接vim 文件名,如下图:

二:vim常用的三种模式

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式

末行模式/底行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

在命令模式下,shift+: 即可进入该模式。

要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

我这里一共有12种模式:six BASIC modes和six ADDITIONAL modes

三:vim的基本操作

我们先来说一下如何调出行号,在底行模式下,输入set nu就可以调出行号,输入set nonu就可以关闭行号。

但是大多数的指令都是在命令模式下操作的,不是底行也不是插入。

接下来我们看看vim的一些基本指令:

首先我们Linux并没有完全兼容小键盘,虽然可以使用小键盘上的上下左右按键,但是我们不建议这么使用,我们在Linux里面有专属的上下左右:hjkl

h:左,因为它是四个字母里面最左边的

l:右,因为它是四个字母里面最右边的

j:下,可以理解为jump,向下跳

k:上,可以理解为king,高高在上

yy/nyy:复制当前行或者复制当前行在内的指定若干行。

p/np:粘贴一行或者多行的内容到当前光标所在行的下一行

未复制前:

我们对第一行yy操作,复制第一行,然后光标放在最后一行,然后p操作。如下图:

我们这次输入7yy,然后光标移动到最后一行:

然后我们p操作:

我们就将这7行复制到了光标所在行的下一行。

如果我们7p,就是将所复制的7行复制到光标所在的下一行然后复制7份。如下图:

u:撤销上一次的操作,比如上图我们复制的,按u就可以撤销,如下图:

未按u之前的代码:

按u之后:

ctrl +r:对刚才的撤销进行撤销

我们在上面按完u之后在按ctrl+r,如下图:

所以u和ctrl+r是一对反操作,两者对立。

dd/ndd:对当前行,或者当前行在内的n行的内容进行剪切

如果只进行dd/ndd就是删除

没有dd操作之前的代码如下:

我们按dd,剪切了光标所在行:

如果是多行的话一样的操作就不过多演示。

shift g:将光标定位到文档最结尾

我们说了vim操作不用鼠标,那么一定我们代码很多行的话要找到结尾就单单靠j按键是非常不方便的,我们这里就引入了shift g指令:

我们现在光标位于第一行,如下图

然后我们进行shift g操作,直接定位到最后一行了,如下图:

gg:将光标定位到文档最开始

n shfit g:将光标定位到文档的指定行

shift 4:将光标定位到文档行的结尾

就是将光标定位到当前光标所在行的结尾:

我们现在光标位于第5行的开头位置,如下图:

然后我们shift 4,效果如下图:

shift 6:将光标定位到文档行的最开始

n w,n b:按照单词为单位,进行前后移动,w向后,b向前

shift ~:快速大小写切换

n r:替换光标所在的字符

先输入n r,然后输入要替换的字符

n x(小写x):行内删除,左侧->右侧

n X:行内删除,右侧->左侧

有关三分钟学会用Vim的更多相关文章

  1. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  2. ruby - 从 Rakefile 打开 Vim? - 2

    我正在为个人笔记创建一个日志应用程序,并且在我的Rakefile中包含以下内容:task:newdoentry_name="Entries/#{Time.now.to_s.gsub(/[-\:]+/,'.').gsub(/.0500+/,'')}.md"`touch#{entry_name}``echo"#$(date)">>#{entry_name}`end我想包括的最后一部分是Vim文本编辑器的打开,但我不知道如何打开它,就像我直接从bash终端调用它一样。我试过:vim#{entry_name}但不幸的是,我认为它们都将其作为后台进程打开。我一直在引用“6WaystoRunShe

  3. ruby-on-rails - Textmate 'Go to symbol' 相当于 Vim - 2

    在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol

  4. 三分钟集成 TapTap 防沉迷 SDK(Unity 版) - 2

    三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应

  5. ruby-on-rails - 如何在 vim 编辑器中使用 bundler 打开 gem 源代码 - 2

    尝试使用bundleopen命令打开gem源代码,accordingtoofficialdocumentationandinstruction.因此,我在.profile中导出编辑器:exportBUNDLER_EDITOR=viexportEDITOR=vi并尝试打开例如rails使用控制台的源代码:bundleopenrails出现错误CouldnotlocaleGemfile[ruby-2.1.1][~/]$:rails-vRails4.0.3[ruby-2.1.1][~/]$:bundle-vBundlerversion1.5.3[ruby-2.1.1][~/]$:bundle

  6. ruby-on-rails - vim 和 Ruby on Rails - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我工作时有Mac,我的笔记本上有Ubuntu,我的服务器上有CentOS,我女朋友家有Windows和我的虚拟机。我曾经在gMate(Ubuntu)上工作,它非常好,与TextMate(在我的Mac上)、e.texteditor(Windows)和CentOs上的nano。现在我想为我的所有环境安装一个编辑器。我可以选择vim或emacs。我认为vim更易于管理:)。

  7. ruby - Treetop 的 Vim 缩进文件(Ruby 解析器) - 2

    有没有人见过treetop的vim缩进文件?,Ruby解析器/生成器?我找到了一个vim语法高亮文件,但还没有看到用于缩进的文件。 最佳答案 看起来很简单——我只是创建一个文件~/.vim/indent/treetop.vim并使其唯一的内容runtime!indent/ruby.vim它似乎可以支持我所需要的一切。我认为它只是没有加载Ruby的缩进文件! 关于ruby-Treetop的Vim缩进文件(Ruby解析器),我们在StackOverflow上找到一个类似的问题:

  8. ruby-on-rails - 应用程序显示错误的小时和分钟 - 2

    起初:那不是错误区域的问题。在irb和数据库中,一切都很好。当我想在我的View中显示日期(created_at、updated_at和所有由我自己在每个模型中定义的日期)时,就会出现问题。我试图在application.rb中设置时区并从初始化程序中删除时间格式,但这并没有解决我的问题。Annotategem生成的架构信息:#created_at:datetime#updated_at:datetime#publish_at:datetime来自irb:1.9.2-p290:004>Time.zone=>(GMT+00:00)UTC1.9.2-p290:005>Time.zone.n

  9. ruby - 如何在 vim 中删除 ruby​​ 周围的 block (做/结束) - 2

    如何用vim删除ruby中do/end分隔的环绕block例如(10..20).mapdo|i|(1..10).mapdo|j|pjendend我想做一些类似dsb的事情(删除环绕block)并得到(1..10).mapdo|j|pjend 最佳答案 也许你可以制作nnormap。每个end/do对都在同一个缩进上,所以首先你应该找到对缩进-在这种情况下,下一行相同的缩进(因为你的光标在do行。)所以你可以让vimscript函数找到下一个缩进线并删除它。这是函数的一个例子。您可以自定义您想要的-即)为休息行设置缩进。functio

  10. ruby - vim 使用 AutoComplPop 插件崩溃 - 2

    我使用vim编辑ruby​​文件,但是当我输入“.”时它崩溃了。我发现它是由AutoComplPop插件引起的。我该怎么办? 最佳答案 我找到了一种使用autocomplpop和filetype=ruby来防止vim崩溃的方法。将以下行放入您的.vimrcletg:acp_behaviorRubyOmniMethodLength=-1这将防止在您键入“.”时触发autocomplpop。(期间)这不是解决办法。(我不是vim插件程序员)祝你好运! 关于ruby-vim使用AutoComp

随机推荐