草庐IT

Linux文本编辑器Vim操作命令汇总!

Python 集中营 2023-09-20 原文

vim编辑器无疑是每个开发者都必须掌握的,通常在Linux的服务器操作文件内容都是需要使用到它的。

但是在使用时能够记住的vim命令又是少之又少,如果是专业运维人员的话可能就比较熟悉,但是我们开发人员一般只有在服务器部署、日志查看等场景才能使用到。

所以就经常容易忘记,于是今天在这里将Vim使用到的命令和操作都进行了一个汇总,以免大家在使用的过程中遇到一些生僻的命令就需要去查资料。

Vim编辑器是Linux操作系统中必须掌握的一项技能,就像windows系统中操作文本文档一样,它的重要之处这里就不过多说了,直接进行正题。

1、Vim插入模式操作

命令:vim [文件名]

通过vim命令直接进入所需要编辑的文件当中,进入文件之后输入a/i/o的任意一个字母即可进入插入模式,在插入模式下就可以对文本内容进行编辑了。

文件编辑完成之后即可使用esc键直接进入到正常模式,此时就不能对文件进行编辑了。可以使用下面的几种方式对文件进行保存处理。

:w (保存当前文件)
:q (退出当前文件)
:wq (输入[wq],存盘并退出vim)
:q! (输入q!,不存盘强制退出vim)

这里的感叹号!表示强制的意思,使用q表示退出当前的文件操作就会返回到Linux操作系统的文件目录下面。

2、Vim正常模式操作

使用Vim进入文件编辑以后默认就是正常模式,如果是插入模式的则还是按esc键即可进入正常模式。

按 [ G ]:移动到文章的最后。
按 [ $ ]:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”。
按「w」:光标跳到下个字的开头。
按「e」:光标跳到下个字的字尾。
按「b」:光标回到上个字的开头。
按「#l」:光标移到该行的第#个位置,如:5l
按[gg]:进入到文本开始。
按[shift+g]:进入文本末端。
按 [ ctrl ] + [ b ] :屏幕往“后”移动一页。
按 [ ctrl ] + [ f ] :屏幕往“前”移动一页。
按 [ ctrl ] + [ u ] :屏幕往“后”移动半页。
按 [ ctrl ] + [ d ] :屏幕往“前”移动半页。
[ x ]:每按一次,删除光标所在位置的一个字符。
[ #x ]:例如,[ 6x ] 表示删除光标所在位置的“后面(包含自己在内)”6个字符。
[ X ]:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
[ #X ]:例如,[ 20X ] 表示删除光标所在位置的“前面”20个字符。
[ dd ]:删除光标所在行。
[ #dd ]:从光标所在行开始删除#行。
[ yw ]:将光标所在之处到字尾的字符复制到缓冲区中。
[ yy ]:复制光标所在行到缓冲区。
[ #yy ]:例如,[ 6yy ] 表示拷贝从光标所在的该行“往下数”6行文字。
[ p ]:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
[ #p ]:例如,[ 100p ] 表示将缓冲区内的所有内容粘贴100次到光标位置。
[ r ]:替换光标所在处的字符。
[ u ]:如果您误执行一个命令,可以马上按下 [ u ],回到上一个操作。按多次“u”可以执行多次恢复。
[ ctrl + r ]: 撤销恢复。
[ cw ]:更改光标所在处的字到字尾处。

需要注意的是在使用Vim命令操作的过程中必须遵守命令字母的大小写,因为操作命令是区分大小写,有时候往往大写或小写执行的结果是相反的。

上述就是常用的Vim操作命令及实现效果的汇总,基本上涵盖了日常操作过程中的命令集合,还有其他相关的操作我们继续发掘,感谢大家的阅读!

往期精彩

又发现了一个Jupyter Notebook的黑科技,Visual Python支持无代码开发!

有了PySnooper,不用print、不用debug轻松查找问题所在!

自制python拼图小游戏,想玩什么拼图完全可以自己设置!

有关Linux文本编辑器Vim操作命令汇总!的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  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 - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

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

  4. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  7. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  8. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  9. ruby - 从 Ruby : capturing the output while displaying the output? 运行 shell 命令 - 2

    我有一个问题。我想从另一个ruby​​脚本运行一个ruby​​脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密

  10. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

随机推荐