vim使用技巧,就是vim编辑器中复杂一点的常用操作。

1、在vim中导入其他文件内容或命令结果

(1)导入其他文件内容

在末行模式中执行命令::r 文件名(绝对路径)

可以把其他文件的内容导入到光标所在位置。

(2)在vim中执行系统命令

:!命令 :在vim中执行系统命令。

这里只是在vim中执行系统命令,但并不把系统命令的结果写入到文件中(不影响vim正在编辑的文档内容)。主要用于在文件编辑中,需要查看系统信息,如时间等。

vim的命令模式执行::!date

会显示系统命令执行的结果:

请按ENTER(回车键)或其它键就可以回到文档编辑中页面。

但是我们最常用的方式是再打开一个终端,执行系统命令,更为方便。

(3)导入命令结果

执行命令::r !命令

vim中执行系统命令,并把命令结果导入光标所在行。

2、设定快捷键

vim编辑器允许自定义快捷键。

自定义快捷键::map 快捷键 快捷键执行的命令

常用的自定义快捷键如下:

  1. :map ^P I#<ESC>:按ctrlt+p时,在行首加入注释(在行首加一个#

    • ^P意思为ctrlt+p
    • I表示有命令模式转换到输入模式,光标移动到行首。
    • I#<ESC>表示光标移动到行首,输入#,然后执行ESC键(返回命令模式)。
  2. :map ^B ^x:按ctrlt+b时,删除行首第一个字母(有注释的行,则为删除注释)。
    • ^表示光标移动到行首。
    • x表示命令模式的删除操作。

    注意:^P快捷键不能手工直接输入,需要执行ctrl+V+P组合键来定义,或者先按ctrl+V,(松开后)然后再按ctrl+P^B快捷键也是一样。ESC可以直接手工输入。

以上设置的是临时生效,一旦Linux系统重启,设置消失。

如果需要永久生效,需要写入vim编辑器的配置文件,位置在~/.vimrc

vim编辑器设定快捷键一般情况下用的很少。

3、字符替换

vim编辑中,有时候需要频繁输入某一个长字符串(比如邮箱),这时使用字符串替换,能增加输入效率。

执行命令字符替换::ab 源字符 替换为字符

例如:

当输入mymail时,转变为邮箱(输入mymail后按空格后转变)。

:ab mymail xxxxxxxxxx@163.com

注意:“源字符”不应设置的太短,否则有可能影响输入(和本中不应替换的字符重叠,就非常麻烦了)。

同样也是临时生效,需要永久生效,需要写入vim编辑器的配置文件中,同上。

4、多文件打开

vim中可以同时打开两个文件,执行如下命令:

[root@localhost ~]# vim -o abc(文件) bcd(文件)

[root@localhost ~]# vim -O abc bcd

说明:

  • #-o:小写。会上下分屏打开两个文件。
  • #-O:大写。会左右分屏打开两个文件。

这样可以同时打开两个文件,方便操作。

如果是-o(小写)上下打开两个文件,可以通过先按ctrl+w,(松开)再按“上下箭头”的方式在两个文件之间切换。(就可以进行复制粘贴等常规操作了)

如果是-O(大写)左右打开两个文件,可以通过先按ctrlt+w,(松开)再按“左右箭头”的方式在两个文件之间切换。(同上)

退出时,依次执行:wq退出即可,需执行两次。

『学了就忘』vim编辑器基础 — 97、vim使用技巧的更多相关文章

  1. 『学了就忘』vim编辑器基础 — 96、末行模式中的相关命令

    目录 1.在文档中显示行号 2.是否显示文档内容相关颜色 3.是否将查找的字符串高亮显示 4.是否显示右下角的状态栏 5.是否在左下角显示如"--INSERT--"之类的状态栏 6 ...

  2. 『学了就忘』Linux权限管理 — 56、不可改变位权限(chattr)

    目录 1.命令格式 2.查看文件系统属性chattr权限 3.示例 文件系统属性chattr权限,也叫不可改变位权限,该权限没有风险,但是他能限制root用户. 1.命令格式 [root@localh ...

  3. 『学了就忘』vim编辑器基础 — 94、vim编辑器介绍

    目录 1.vim编辑器简介 2.vim的工作模式 (1)命令模式 (2)输入模式 (3)最后行模式(末行模式) 1.vim编辑器简介 vim是一个全屏幕纯文本(绘个表格或者插个图片就不要想了)编辑器, ...

  4. 『学了就忘』vim编辑器基础 — 95、命令模式中的相关命令

    目录 1.移动光标操作 2.删除或剪切操作 3.复制操作 4.撤销操作 5.替换操作 6.补充一个知识点 命令模式中的命令主要取代的是Linux系统中鼠标的操作. vim编辑器的快捷键一般都集中在命令 ...

  5. 『学了就忘』Linux用户管理 — 52、用户组管理相关命令

    目录 1.添加用户组 2.删除用户组 3.把用户添加进组或从组中删除 4.有效组(了解) 1.添加用户组 添加用户组的命令是groupadd. 命令格式如下: [root@localhost ~]# ...

  6. 『学了就忘』Linux权限管理 — 54、sudo授权

    目录 1.什么是sudo授权 2. sudo授权说明 3.sudo命令的使用 示例1 示例2 示例3 1.什么是sudo授权 在Linux系统中,/sbin/和/usr/sbin/两个目录中的命令只有 ...

  7. 『学了就忘』Linux文件系统管理 — 64、磁盘配额的配置步骤

    目录 1.手工建立一个5GB的分区 2.建立需要做限制的三个用户 3.在分区上开启磁盘配额功能 4.建立磁盘配额的配置文件 5.开始设置用户和组的配额限制 6.启动和关闭配额 7.磁盘配额的查询 8. ...

  8. 『学了就忘』Linux系统定时任务 — 89、任务调度工具anacron

    目录 1.任务调度工具anacron介绍 2.新旧版本Linux中anacron工具的区别 3./etc/cron.{daily,weekly,monthly}目录说明 4.anacron命令 5./ ...

  9. 『学了就忘』Linux日志管理 — 90、Linux中日志介绍

    目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...

随机推荐

  1. 使用dumi生成react组件库文档并发布到github pages

    周末两天玩了下号称西湖区东半球最牛逼的react文档站点生成工具dumi,顺带结合github pages生成了react-uni-comps文档站, 一套弄下来,感觉真香,现在还只是浅尝,高级的特性 ...

  2. C/C++ Qt 数据库与TreeView组件绑定

    在上一篇博文<C/C++ Qt 数据库QSql增删改查组件应用>介绍了Qt中如何使用SQL操作函数,并实现了对数据库的增删改查等基本功能,从本篇开始将实现数据库与View组件的绑定,通过数 ...

  3. 日常Java 2021/10/12

    封装 在面向对象程式设计方法中,封装是指-种将抽象性函式接口的实现细节部分包装.隐藏起来的方法 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问 要访问该类的代码和数据,必 ...

  4. A Child's History of England.44

    At this period of his reign, when his troubles seemed so few and his prospects so bright, those dome ...

  5. HDFS【Namenode、SecondaryNamenode、Datanode】

    目录 一. NameNode和SecondaryNameNode 1.NN和2NN 工作机制 2. NN和2NN中的fsimage.edits分析 3.checkpoint设置 4.namenode故 ...

  6. 【Linux】【Shell】【Basic】函数

    1. 函数:function,把一段独立功能的代码当作一个整体,并为之一个名字:命名的代码段,此即为函数: 注意:定义函数的代码段不会自动执行,在调用时执行:所谓调用函数,在代码中给定函数名即可: 函 ...

  7. 阿里云esc 安装 docker

    1. 更新 yum 到最新: yum update (用 root 用户登录,无需加 sudo,如果不是,需要加,即  yum update ) 2. 安装软件包:yum-util(提供 yum-co ...

  8. Pycharm, 添加requirements.txt

    引用:https://www.jetbrains.com/help/pycharm/managing-dependencies.html 1) 2) 3)

  9. C#中继承和多态

    1.继承的概念 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能. 为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总 ...

  10. react原理分析--this.state修改引起的重新渲染

    整理向,非原创,目的是整理出浅显易懂的方向性说明. 比如现有 this.state={name:"小明",age:18} 我们说修改组件的状态要用this.setState()来实 ...