草庐IT

vim编辑模式

strive ping 2023-08-14 原文

vim进入编辑模式,vim命令模式

vim进入编辑模式

从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可,当进入编辑模式时,在屏幕的尾行显示INSERT字样(若支持中文,则显示插入)。按Esc键,从编辑模式回到一般模式。

按键 作用 含义
i 在当前字符前插入 (记忆:insert)
I 在光标所在行的行首插入
a 在当前字符后插入 (记忆:after insert)
A 在光标所在行的行尾插入
o 在当前的下一行插入新的一行
O 在当前的上一行插入新的一行
s 删除光标所指向字符再插入 类似覆盖替换操作(记忆:switch)
S 删除光标所在行开始插入 类似覆盖替换操作(记忆:switch)

vim底行模式的功能
在一般模式下,输入或者/即可进入命令模式

命令                    作用                          含义
:w                  保存文件                      (记忆:write)
:q                  退出Vin              未修改文件内容时用(记忆:quit)
:w!                 强制保存,在root用户下,即使文本只读也可以完成保存
:q!                 强制退出,所以改动不生效       修改不保存文件内容时用
:wq                 保存并退出                  (记忆:write quit)
:set nu             显示行号
:set nonu           不显示行号

vim三种模式常用命令

/*vim三种模式常用命令
    *命令                      含义                                    备注
     yy                 复制光标所在行                          3yy表示复制3行,nyy表示复制n行
     p               在光标所在行的下行开始粘贴                       (记忆:小写在下)
     P               在光标所在行的上行开始粘贴                        (记忆:大写在上)
     gg              光标跳转到首行首字符                          ngg表示跳转到距离首行n行的位置
     G                  光标跳转到尾行首字母
  ^ (shift+6)          跳转到光标所在行首字母                         (记忆:^表示头)
  #(shift+3)           跳转到光标所在行尾字母                         (记忆:$表示尾巴)
   *dd或者D                 删除光标所在行
     d^                   从光标位置删除至行首(不含光标)             (记忆:d表示delete,^ 表示头,d^即表示删除到头)
     
     d$                   从光标位置删除至行尾巴(含光标)            (记忆:d表示delete,^ 表示尾,d^即表示删除到尾)
     
    dgg                    删除光标所在行以上所有行                  (记忆:d表示delete,gg表示定位到首行首字母,即dgg表示删除到首行)
    
    dG                 删除光标所在行以下所有行                   (记忆:d表示delete,G表示定位到尾行首字母,即dG表示删除到尾行)
    
    x                   删除光标后的一个字符                        nx表示删除光标后n个字符,类似windows下的delete键(尝试了一下发现linux下delete键作用与x相同)
    
    X                   删除光标前的一个字符                       nX表示删除光标后的n个字符类似windows下的backspace键盘(尝试了发现linux下的backspace表示光标左移)
    
    u                     撤销上次操作
ctrl+←/→键               快速向左右移动光标                            即每个空格空行间快速移动)
n+←/→键                  向左或者向右移动n个字符

有关vim编辑模式的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

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

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

  5. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  6. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  7. ruby-on-rails - environment.rb 中设置的常量在开发模式中消失 - 2

    了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl

  8. 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

  9. Ruby:标准递归模式 - 2

    我经常迷上ruby​​的一件事是递归模式。例如,假设我有一个数组,它可能包含无限深度的数组作为元素。所以,例如:my_array=[1,[2,3,[4,5,[6,7]]]]我想创建一个方法,可以将数组展平为[1,2,3,4,5,6,7]。我知道.flatten可以完成这项工作,但这个问题是作为我经常遇到的递归问题的一个例子-因此我试图找到一个更可重用的解决方案。简而言之-我猜这种事情有一个标准模式,但我想不出任何特别优雅的东西。任何想法表示赞赏 最佳答案 递归是一种方法,它不依赖于语言。您在编写算法时要考虑两种情况:再次调用函数的情

  10. ruby - 在 Ruby 中查找多个正则表达式匹配的模式和位置 - 2

    这应该是一个简单的问题,但我找不到任何相关信息。给定一个Ruby中的正则表达式,对于每个匹配项,我需要检索匹配的模式$1、$2,但我还需要匹配位置。我知道=~运算符为我提供了第一个匹配项的位置,而string.scan(/regex/)为我提供了所有匹配模式。如果可能,我需要在同一步骤中获得两个结果。 最佳答案 MatchDatastring.scan(regex)do$1#Patternatfirstposition$2#Patternatsecondposition$~.offset(1)#Startingandendingpo

随机推荐