当前位置: 首页 > news >正文

【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 函数,实现更复杂的文本操作和编辑功能。

http://www.lryc.cn/news/191978.html

相关文章:

  • 怎样学习C#上位机编程?
  • 【算法-动态规划】两个字符串的删除操作-力扣 583
  • 【06】基础知识:typescript中的泛型
  • flutter 绘制原理探究
  • [Java]SPI扩展功能
  • 机器人命令表设计
  • STM32--WDG看门狗
  • (※)力扣刷题-字符串-实现 strStr()(KMP算法)
  • Redis 集群 Redis 事务 Redis 流水线 Redis 发布订阅 Redis Lua脚本操作
  • 【算法与数据结构】--常见数据结构--栈和队列
  • Linux shell编程学习笔记11:关系运算
  • JS标准库
  • Android 12.0 hal层添加自定义hal模块功能实现
  • 如何理解vue声明式渲染
  • 【已解决】Vue全局引入scss 个别页面不生效 / 不自动引入全局样式
  • MySQL之双主双从读写分离
  • 使用eBPF加速阿里云服务网格ASM
  • 大型数据集处理之道:深入了解Hadoop及MapReduce原理
  • LCR 095. 最长公共子序列(C语言+动态规划)
  • 程序员不写注释:探讨与反思
  • 《论文阅读:Dataset Condensation with Distribution Matching》
  • 免费chatGPT工具
  • 数据分析基础:数据可视化+数据分析报告
  • settings.xml的文件配置大全
  • 极简c++(7)类的继承
  • DOSBox和MASM汇编开发环境搭建
  • 047:mapboxGL本地上传shp文件,在map上解析显示图形
  • Windows下DataGrip连接Hive
  • Xshell7和Xftp7超详细下载教程(包括安装及连接服务器附安装包)
  • ASP.net数据从Controller传递到视图