【vim 学习系列文章 6 -- vim 如何从上次退出的位置打开文件】
文章目录
- 1.1 vim 如何从上次退出的位置打开文件
- 1.2 autogroup 命令学习
- 1.2.1 augroup 基本语法
- 1.3 vim call 命令详细介绍
1.1 vim 如何从上次退出的位置打开文件
假设我打开了文件 test.c,然后我向下滚动到第 50 行,然后我做了一些修改并关闭了文件。当我重新打开文件时。我希望 光标定位到第 50 行。如何解决这个问题呢?
方法一:
这是由 $VIMRUNTIME/defaults.vim 完成的,在 :h restore-cursor 下也有说明。
方法二:
vim ~/.vimrc 然后添加下面内容
augroup vimStartup | au!autocmd BufRead * call setpos('.', getpos("'\""))
augroup end
方法三:
vim ~/.vimrc 然后添加下面内容:
if has("autocmd")
" In text files, always limit the width of text to 78 characters
autocmd BufRead *.txt set tw=100
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" |
\ endif
endif
1.2 autogroup 命令学习
“augroup” 是 Vim 的一个命令,用于定义或管理自动命令组(autocommand groups)。在Vim中,自动命令(autocommands)是在某些特定事件(如文件保存、文件打开等)发生时自动执行的命令。通过使用 “augroup”,我们可以将相关的自动命令组织在一起,这样在需要修改或删除这些命令时,就可以很方便地一次性管理整个组。
1.2.1 augroup 基本语法
“augroup” 命令的基本语法如下:
augroup group-name autocmd ...
augroup end
- “group-name” 是你为自动命令组指定的名称;
- "autocmd …"是你要定义的一个或多个自动命令。
举个例子,假设我们想要在每次保存.php文件时自动清除尾部的空白字符,我们可以定义如下的自动命令组:
augroup TrimWhiteSpace autocmd! autocmd BufWritePre *.php :%s/\s\+$//e
augroup end
在上面的例子中,“TrimWhiteSpace” 是我们定义的自动命令组的名称,“autocmd BufWritePre *.php :%s/\s+$//e” 定义了一个自动命令,该命令在每次保存.php文件之前("BufWritePre"事件),执行一个删除行尾空白的替换操作。
需要注意的是,"autocmd!"命令用于清除当前组中已有的自动命令,保证我们每次运行这段代码时,都是在一个空的自动命令组中添加新的自动命令。这可以防止出现重复的自动命令。
另外,"augroup end"标记了自动命令组的结束,所有在"augroup"和"augroup end"之间定义的自动命令,都会被添加到当前的自动命令组中。
1.3 vim call 命令详细介绍
在 Vim 中,call 是一个内置的命令,主要用于调用 Vimscript 函数。以下是关于 call 命令的详细解释和示例:
call 命令的基本语法是 :
call functionname(arguments)
其中 functionname 是你要调用的函数的名称,arguments 是传递给函数的参数。在没有参数的情况下,你可以省略括号。
例如,你可以创建一个 Vimscript 函数来增加一个全局计数器:
let g:counter = 0function! AddToCounter()let g:counter += 1
endfunction
然后,你可以使用 call 命令来调用这个函数:
:call AddToCounter()
这将会增加 g:counter 的值。
你也可以创建一个带参数的函数,例如,创建一个可以添加任意数量到计数器的函数:
function! AddToCounter(n) : let g:counter += a:n
endfunction
然后,你可以使用 call 命令并传递一个参数来调用这个函数:
call AddToCounter(5)
这将会把 5 加到 g:counter 的值上。
这就是 Vim call 命令的基本用法。通过使用 call 命令,你可以在 Vim 中调用自定义的 Vimscript 函数,实现更复杂的文本操作和编辑功能。
相关文章:
【vim 学习系列文章 6 -- vim 如何从上次退出的位置打开文件】
文章目录 1.1 vim 如何从上次退出的位置打开文件1.2 autogroup 命令学习1.2.1 augroup 基本语法 1.3 vim call 命令详细介绍 1.1 vim 如何从上次退出的位置打开文件 假设我打开了文件 test.c,然后我向下滚动到第 50 行,然后我做了一些修改并关闭了文件。…...
怎样学习C#上位机编程?
怎样学习C#上位机编程? 00001. 掌握C#编程和.NET框架基础。 00002. 学WinForm应用开发,了解控件使用和事件编程。 00003. 熟悉基本数据结构和算法,如链表、栈、队列。 00004. 理解串口通信协议和方法,用于与硬件交互。 00005…...
【算法-动态规划】两个字符串的删除操作-力扣 583
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
【06】基础知识:typescript中的泛型
一、泛型的定义 在软件开发中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能支持当前数据类型,同时也能支持未来的数据类型,这在创建大型系统时提供了十分灵活的功能。 在像 C# 和 Java 这样的语言中&…...
flutter 绘制原理探究
文章目录 Widget1、简介2、源码分析Element1、简介2、源码分析RenderObjectWidget 渲染过程总结思考Flutter 的核心设计思想便是“一切皆 Widget”,Widget 是 Flutter 功能的抽象描述,是视图的配置信息,同样也是数据的映射,是 Flutter 开发框架中最基本的概念。 在 Flutter…...
[Java]SPI扩展功能
一、什么是SPI Java SPI(Service Provider Interface)是Java官方提供的一种服务发现机制。 它允许在运行时动态地加载实现特定接口的类,而不需要在代码中显式地指定该类,从而实现解耦和灵活性。 二、实现原理 基于 Java 类加载…...
机器人命令表设计
演算命令 CLEAR 将数据 1 上被指定的编号以后的变数的内容,以及数据 2 上仅被指定的个数都清除至 0。 INC 在被指定的变数内容上加上 1。 DEC 在被指定的变数内容上减掉 1。 SET 在数据 1 上设定数据 2。 ADD 将数据 1 和数据 2 相加,得出的结果保存在数…...
STM32--WDG看门狗
文章目录 WDG简介IWDGIWDG的超时计算WWDGWWDG超时和窗口值设定独立看门狗工程WWDG工程 WDG简介 WDG看门狗(Watchdog Timer)是一种常见的硬件设备,在STM32F10系列中,有两种看门狗,分别是独立看门狗和窗口看门狗&#x…...
(※)力扣刷题-字符串-实现 strStr()(KMP算法)
28 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack “hello”, needle “ll” 输出: 2 示例…...
Redis 集群 Redis 事务 Redis 流水线 Redis 发布订阅 Redis Lua脚本操作
Redis 集群 & Redis 事务 & Redis 流水线 & Redis 发布订阅 Redis 集群linux安装redis主从配置查看当前实例主从信息 Redis Sentinelsentinel Redis Cluster Redis 事务Redis 流水线Redis 发布订阅Redis Lua脚本操作 Redis 集群 linux安装redis 下载安装包&#…...
【算法与数据结构】--常见数据结构--栈和队列
一、栈 栈(Stack) 是一种基本的数据结构,具有后进先出(LIFO)的特性,类似于现实生活中的一叠盘子。栈用于存储一组元素,但只允许在栈顶进行插入(入栈)和删除(…...
Linux shell编程学习笔记11:关系运算
Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算。前面几节我们研究了 Linux shell编程 中的 字符串运算 和 算术运算,今天我们来研究 Linux shell编程中的的关系运算。 一、关系运算符功能说明 运算符说明…...
JS标准库
学习一门编程语言不仅是掌握其语法。同等重要的是学习其标准库,从而熟练掌握语言本身提供的所有工具。 1 定型数组 js常规数组与C和Java等较低级语言的数组类型还是有很大区别。ES6新增了定型数组,与这些语言的低级数组非常接近。 定型数组严格来说并…...
Android 12.0 hal层添加自定义hal模块功能实现
1. 前言 在12.0的系统rom定制化开发中,在 对hal模块进行开发时,需要通过添加自定义的hal模块来实现某些功能时,就需要添加hal模块的相关功能,接下来就来实现一个案例来供参考 接下来就来具体实现这个功能 2.hal层添加自定义hal模块功能实现的核心类 hardware\interfaces…...
如何理解vue声明式渲染
Vue.js中的声明式渲染是一种用来描述用户界面的方式,它强调“声明”应该如何渲染页面,而不需要关心底层的DOM操作。这与传统的命令式渲染方式,即手动控制DOM元素的创建、更新和销毁,形成了鲜明的对比。 理解Vue的声明式渲染的关键…...
【已解决】Vue全局引入scss 个别页面不生效 / 不自动引入全局样式
项目里配置了全局样式的引入,今天新建了 demo 页面去修改 element 的样式,发现全局的样式没有引入进来。 问题原因 在此页面 没有任何样式导致的 项目在编译的时候,会把 .vue 文件的样式抽离到单独的 css 文件中。 当该页面没有css代码的时…...
MySQL之双主双从读写分离
一个主机 Master1 用于处理所有写请求,它的从机 Slave1 和另一台主机 Master2 还有它的从 机 Slave2 负责所有读请求。当 Master1 主机宕机后, Master2 主机负责写请求, Master1 、 Master2 互为备机。架构图如下 : 准备 我们…...
使用eBPF加速阿里云服务网格ASM
背景 随着云原生应用架构的快速发展,微服务架构已经成为了构建现代应用的主要方式之一。而在微服务架构中,服务间的通信变得至关重要。为了实现弹性和可伸缩性,许多组织开始采用服务网格技术来管理服务之间的通信。 Istio作为目前最受欢迎的…...
大型数据集处理之道:深入了解Hadoop及MapReduce原理
在大数据时代,处理海量数据是一项巨大挑战。而Hadoop作为一个开源的分布式计算框架,以其强大的处理能力和可靠性而备受推崇。本文将介绍Hadoop及MapReduce原理,帮助您全面了解大型数据集处理的核心技术。 Hadoop简介 Hadoop是一个基于Google…...
LCR 095. 最长公共子序列(C语言+动态规划)
1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(…...
RK3588中使用Serial转发订阅的话题数据
我们在ROS的使用中,常常会通过rostopic echo /***来订阅某个话题数据的输出,我想通过串口对其通串口进行转发。#查看ros话题列表 rostopic list 找到一个你想要订阅的话题如/IMU_data#订阅话题通过终端查看 rostopic echo /IMU_data就会看到以下这种数据…...
2026年,江北高档 KTV 哪个好玩?这份实测推荐别错过!
2026 年,想在江北找个高档又好玩的 KTV 可不容易。其实,深海公馆娱乐会所就凭借多年行业经验,成了很多人的心头好。接下来,我就给大家分享一些 KTV 选择的干货。说实话,很多人去 KTV 都踩过不少坑。比如有些 KTV 装修看…...
金蝶k3软件常用基础SQL数据表
金蝶软件常用基础SQL数据表SQL数据库 1、系统表 t_tabledescription2、字段表 t_fielddescription3、基础资料表(版本:10.3) t_item 其中fitemclassid值表示1-客户;2-部门;3-职员;4-商品;5-仓位…...
1929年大萧条的真相
29年的大萧条,传统经济学将那场灾难归因于投机过热,银行脆弱、需求不足等,但这只是表面因素。大萧条的本质是一场货币危机——黄金的物理极限与生产力指数级增长之间的总爆发。一战后,全球建立金本位体系,要求各国货币…...
ESP32 RMT实现MilesTag 2激光对抗协议
1. milesTag库概述:基于ESP32 RMT外设的MilesTag 2协议激光对抗系统实现milesTag是一个专为Arduino平台设计的轻量级嵌入式库,其核心目标是为开发者提供一套可复用、高精度、低CPU开销的MilesTag 2协议实现方案,用于构建高性能激光对抗&#…...
微信读书助手wereader:革新数字阅读体验的全方位解决方案
微信读书助手wereader:革新数字阅读体验的全方位解决方案 【免费下载链接】wereader 一个功能全面的微信读书笔记助手 wereader 项目地址: https://gitcode.com/gh_mirrors/we/wereader 在信息爆炸的时代,如何高效管理数字阅读内容、系统化整理读…...
云计算案例排错(云上3)
故障1 CPU&内存配额错误 solo-1工作负载启动失败,提示:重启启动容器失败。 解决方案:看下solo-1的更新升级中的容器规划配置,是否是正确的配置(CPU配额:申请0.25Core 限制0.29Core;内存配额…...
从MobileNet到FasterNet:一个ARM安卓开发者的轻量级模型选型与部署实战笔记
从MobileNet到FasterNet:ARM安卓开发者的轻量级模型选型与部署实战 在移动端AI应用开发中,模型选型往往是一场精度与速度的博弈。作为一名长期奋战在ARM平台部署一线的工程师,我经历过太多次这样的场景:产品经理要求"既要实时…...
C# .NET 周刊|2026年3月1期
国内文章.NET 11 预览版1:CoreCLR 在 WebAssembly 上的全面集成与性能突破https://www.cnblogs.com/shanyou/p/19629649.NET 11 Preview 1 正式发布,标志着 CoreCLR 运行时能原生支持 WebAssembly。这是微软在跨平台战略上的重大进展。CoreCLR 提供更优性…...
SwiftHub:终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践
SwiftHub:终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践 【免费下载链接】SwiftHub GitHub iOS client in RxSwift and MVVM-C clean architecture 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftHub SwiftHub是一款功能强大的GitHub iOS客户…...
