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. 《Scala编程》课程作业

    第一题.百元喝酒 作业要求:每瓶啤酒2元,3个空酒瓶或者5个瓶盖可换1瓶啤酒.100元最多可喝多少瓶啤酒?(不允许借啤酒) 思路:利用递归算法,一次性买完,然后递归算出瓶盖和空瓶能换的啤酒数 /** ...

  2. Hadoop的HA机制浅析

    Zookeeper在Hadoop的HA中的应用 非HA的弊端: HDFS集群的分布式存储是靠namenode节点(namenode负责响应客户端请求)来实现.在非HA集群中一旦namenode宕机,虽 ...

  3. 大数据学习day20-----spark03-----RDD编程实战案例(1 计算订单分类成交金额,2 将订单信息关联分类信息,并将这些数据存入Hbase中,3 使用Spark读取日志文件,根据Ip地址,查询地址对应的位置信息

    1 RDD编程实战案例一 数据样例 字段说明: 其中cid中1代表手机,2代表家具,3代表服装 1.1 计算订单分类成交金额 需求:在给定的订单数据,根据订单的分类ID进行聚合,然后管理订单分类名称, ...

  4. 零基础学习java------36---------xml,MyBatis,入门程序,CURD练习(#{}和${}区别,模糊查询,添加本地约束文件) 全局配置文件中常用属性 动态Sql(掌握)

    一. xml  1. 文档的声明 2. 文档的约束,规定了当前文件中有的标签(属性),并且规定了标签层级关系 其叫html文档而言,语法要求更严格,标签成对出现(不是的话会报错) 3. 作用:数据格式 ...

  5. 机器学习常用python包

    (py37) ai@ai:~$ pip freeze |grep -v '@' astor==0.8.1 certifi==2021.5.30 chardet==4.0.0 cycler==0.10. ...

  6. OpenStack之之一: 快速添加计算节点

    根据需求创建脚本,可以快速添加节点#:初始化node节点 [root@node2 ~]# systemctl disable NetworkManager [root@node2 ~]# vim /e ...

  7. redis入门到精通系列(六):redis的事务详解

    (一)事务的概念 谈到数据库的高级应用,不可避免会谈到事务.熟悉mysql的朋友们对事务肯定不陌生,简单来讲事务就是控制一个数据库操作序列要么全部执行要么全部不执行.今天我们就来了解redis中的事务 ...

  8. BeanDefinitionLoader spring Bean的加载器

    spring 容器注册bean , 会把bean包装成beanDefinition 放进spring容器中,beanDefinitionLoader就是加载bean的类 . 一.源码 class Be ...

  9. 【Java 8】Stream中的Pipeline理解

    基于下面一段代码: public static void main(String[] args) { List<String> list = Arrays.asList("123 ...

  10. contrller层的编码设设计流程以及详细配置

    /**      实际开发中遵循一个规律:自己写的类使用注解,系统提供的类使用配置文件 1.书写controller类----->配置springmvc.xml-------->配置web ...