草庐IT

【Linux编辑神器:vim】

Fox! 2023-11-05 原文

目录

 1. vim的基本概念

 2. vim的基本操作

 3. vim正常模式命令集

4. vim底行模式命令集

5. 简单vim配置

6 总结


什么是Vi/Vim?

vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x window mac os windows

 Vi/Vim键盘图:


 1. vim的基本概念

博客中我们主要讲解 vim 的三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是命令模式( command mode )、插 入模式( Insert mode )和底行模式(last line mode)

各模式的功能区分如下

  • 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
  •  插入模式(Insert mode)
只有在 Insert mode 下,才可以做文字输入,按 「ESC」 键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
  •  底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift+;( :) 即可进入该模式。要查看你的所有模式:打开 vim ,底行模式直接输入(退出查看所有模式可以在底行模式下输入 :exit )
:help vim-modes

 注意:

1 我这里是使用了配置过的vim,所以用起来比较方便舒适,文章后面我会给出具体的配置方法,这里有需要的老铁可以直接跳转到文章末尾。

2 当我们打开vim时默认是在命令模式下,命令模式是插入模式和底行模式的中转站,插入模式与底行模式的转换都必须先转换为命令模式。

3 这些命令必须使用英文字符。


 2. vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

我这里配置后是这个样子:

不过有一点要特别注意,就是你进入 vim 之后,是处于 [ 正常模式 ] ,你要切换到 [ 插入模式 ] 才能够输入文字.
  • [正常模式]切换至[插入模式]
  • 输入a (跳转到光标的下一个位置)
  • 输入i (跳转到光标当前位置)
  • 输入o(跳转到下一行)
  •  [插入模式]切换至[正常模式]

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。这里再补充一下,最开始的电脑是没有配备上下左右键的,而是用h(左),j(下),k(上),l(右)来代替的,后续有关其他vim相关操作有些会搭配着这些键使用

  • [正常模式]切换至[末行模式]
shift + ; , 其实就是输入「:
  • 退出vim及保存文件,[正常模式]下,按一下「:」冒号键进入「Last line mode

例如:

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

 3. vim正常模式命令集

注意:以下命令都是在命令模式下执行的。

  • 插入模式
  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
  •  从插入模式切换为命令模式
  • 按「ESC」键。
  •  移动光标
  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」「j」「k」、l」,分别控制光标左、下、上、右移一格;
  • 按[ gg]:进入到文本开始;(可以与n结合使用,n+gg跳转到第n行)
  • 按「shift+g (G)」:移动到文章的最后;(可以与n结合使用,n+G跳转到第n行)
  • 按「shift+4 ($) 」:移动到光标所在行的行尾”;
  • 按「shift+6 (^)」:移动到光标所在行的行首“;
  • 按「w」:光标跳到下个字的开头;
  • 按「e 」:光标跳到下个字的字尾;
  • 按「b 」:光标跳到上个字的开头;
  • 按「 nl 」:光标移到该行的第n 个位置;
  • 按「 ctrl + b 」:屏幕往 移动一页;
    按「 ctrl + f 」:屏幕往 移动一页;
    按「 ctrl +u 」:屏幕往 移动半页;
    按「 ctrl + d 」:屏幕往 移动半页.
  •  删除文字
  • 按「x」:每按一次,删除光标所在位置的一个字符;(可以与n搭配,「nx」表示删除光标所在位置的后面(包含自己在内n个字符 )
  • 按「X」:大写的X,每按一次,删除光标所在位置的前面”一个字符;(可以与n搭配,「nX」表示删除光标所在位置的前面(不包含自己在内n个字符)
  • 按「dd」:删除光标所在行;(可以与n搭配,从光标所在行开始删除n行)
  •  复制
  • 按「yw」:将光标所在之处到字尾的字符复制到缓冲区中;(可以与n搭配,「nyw」表示复制n个字符到缓冲区中)
  • 按「yy」:复制光标所在行到缓冲区;(可以与n搭配,「nyy」表示拷贝从光标所在的该行往下数”n行文字。
  • 按「p」:将缓冲区内的字符贴到光标所在位置;注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 按「dd+p」:等同于剪切功能。
  •  替换
  • 按「r」:替换光标所在处的字符;(支持nr)
  • 按「R」:替换光标所到之处的字符,直到按下「ESC」键为止;
  •  撤销上一次操作
  • 按「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复;
  • ctrl + r: 撤销的恢复 。
  •  更改
  • 按「cw」:更改光标所在处的字到字尾处
  • 按「cnw」:例如,「cnw」表示更改3n个字
  •  跳至指定的行
  • 按「ctrl+g」列出光标所在行的行号;
  • 按「nG」:例如,「15G」,表示移动光标至文章的第15行行首.
  •  大小写切换

按「shift+~」:大小写转换(一直按住shift可以一直转换)


4. vim底行模式命令集

注意:以下命令均是在底行模式下进行。

在使用底行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入底行模式。

  • 列出行号
  • set nu: 输入「set nu」后,会在文件中的每一行前面列出行号。
  •  跳到文件中的某一行
  • 「n:n」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15再回车,就会跳到文章的第15行.
  •  查找字符
  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n」会往后寻找到您要的关键字为止。
  • ?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。「?关键字」与「/关键字」的区别是「/关键字」会让光标定位到首行,而「?关键字」则不是。
  •  保存文件
  • w: 在冒号输入字母「w」就可以将文件保存起来
  • 离开vim
  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离vim
  • wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
  • 多文件操作

「vs+文件名」:按「ctrl+w+w」在文件中互相切换,打开后就像这样:

 另外如果输入一个新的文件名时与使用vim打开文件一样,没有就会重新建立一个,就像这样:

 退出的话光标定位到哪里就用对应的命令退出该文件即可。


 5. 简单vim配置

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行 vim .vimrc。

 常用配置选项,用来测试

  • 设置语法高亮: syntax on
  • 显示行号: set nu
  • 设置缩进的空格数为4: set shiftwidth=4

 使用插件

要配置好看的 vim ,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户。这里大家可以自行在网上查询资料。

 这里我们如果要配置的话不用那么麻烦,已经有了大佬给我们配置好了的(非常感谢汤神老师),大家可以在自己的用户上输入下面这段指令系统就会自动给我们当前用户配置,具体命令为:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

6 总结

今天我们重点介绍了Linux下编辑神器vim的使用,总的来说vim的使用成本还是蛮高的,但是这个确是我们不得不掌握的一项基本技能,只要多花些时间去练习我相信这对我们来说应该不是太大的问题。如果今天的文章对你有收获的话能不能3连支持一下博主呢?

有关【Linux编辑神器:vim】的更多相关文章

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

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

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

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

  4. ruby-on-rails - 尝试打开 .gitignore 以在文本编辑器中对其进行编辑,但在 OS X Mountain Lion 上找不到文件位置 - 2

    我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位

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

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

  6. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  7. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  8. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

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

  10. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

随机推荐