linux vim 插入行号
1 在文本中插入行号
最近有朋友提到某编辑器有一个可以插入行号的插件,问Vim有没有办法可以在文章中插入行号。%$^&*#8~#$@#!……让我们看一下有多少种方式可以在vim中插入行号或数字序列!
建议看一下Vim官网的这篇文章。里面一部分内容与这篇是重叠的。不过这篇是中文的XD。
我们的目的是在当前编辑文中的每一行前面加上行号或数字序列并用空格分隔,如:
这是第一行
这是第二行
这是第四行
在插入行号后将成为:
1 这是第一行
2 这是第二行
3
4 这是第四行
但有时我们需要对部分行编号。下面的例子是对第二行以后的所有非空行依次编号:
这是第一行
1 这是第二行
2 这是第四行
为了区别行号,我这里就称之为数字序列。
进入正题。
1.1 使用line()函数
相信这是大多数人第一个想到的解法了——使用line()函数产生行号用:s命令插入行号。
" 为所有行加上行号
" 使用合适的范围或者正则表达式就可以限定作用的范围。
:g/^/ s//=line('.').' '/
优点是简单易用。缺点是不够灵活,只能用以显示指定行的行号。
1.2 使用ex命令
vim提供了一些可以打印行号的ex命令,如,”=”, “p #” 和”#“。为了捕捉Vim的命令输出,我们用redir命令。
" 为前30行加上行号
:redir @a | 1,30# | redir END
:1,30d | put! a
逻辑上很容易理解:1,30#显示前30行及其行号。保存到寄存器a中,删掉前30行,再贴上寄存器的内容。
没什么明显优点的一种方法。缺点同上。如果不是更改当前编辑区的内容而是直接保存到新文件的话,这种方法就比其他的方法方便。
1.3 使用range()函数
range()是个新的函数,用来产生包含数字序列的列表。当然也可以用来生成行号:
" 为前30行加上行号
:for i in range(31)
:call setline(i,i .' '. getline(i))
:endfor
对range(),setline()的用法见帮助文档。
range()函数相对前面的2个解法而言要灵活许多,除可用以表示行号,也可以用来编数字序列,相应地也要求一些编程基础。
1.4 加法运算
这是也是简单灵活的一种解法。好吧,也许大家第一个想到的解法不是使用line()函数。
" 为所有行加上行号
:let i=1
:g/^/ s//=i . ' '/ |let i=i+1
注意:g后面的两条命令(
linux vim 插入行号的更多相关文章
- vim 插入行号
:let i=1000000|g/^/s//\=i.' '/|let i=i+1
- Ubuntu vim显示行号语法高亮自动缩进
配置文件名为Ubuntu vimrc在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc在终端 输入以下命令来编辑Ubuntu vimrc配置文件:sudo vi ...
- 【转】设置 vim 显示行号永久有效
在linux环境下,vim是常用的代码查看和编辑工具.在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎样才能让vim显示代码的行号呢? 1 临 ...
- 如何使得VIM显示行号
如何使得VIM显示行号: :set number
- centos7 vim显示行号
CentOS7下可能有n个账户,让vim显示行号有两种方法:仅让当前用户显示行号和让所有用户显示行号 一.仅让当前用户显示行号 输入命令:vim ~/.vimrc 写入:set nu 保存:wq ...
- vim 显示行号 临时&永久
设置vim 永久显示行号 - electrocrazy的博客 - CSDN博客https://blog.csdn.net/electrocrazy/article/details/79035216 v ...
- linux中vi/vim显示行号设置
vim打开文件是,默认不提示行号. 至于显示行号的用途,因人而异 临时修改只需要在编辑文件时输入 :set number 即可 linux下一个主机可能有N个账户.对于配置分为两种:仅配置当前账户,配 ...
- [原创]关于设置linux中vim 显示行号
1.更改所有账户配置 直接更改/etc/vimrc vim /etc/vimrc 在vimrc文件的最后添加 set nu 即可 wq退出. 这样,不论使用哪个账号登陆,vim打开后都显示行号 2.为 ...
- linux中 vi / vim显示行号或取消行号命令
1. 显示行号 :set number 或者 :set nu 2. 取消行号显示 :set nu! 3. 每次打开都显示行号 修改vi ~/.vimrc 文件,添加:set number
随机推荐
- 贝塔阶段html及pdf模块测试
这次虽然工作内容是将c#的html及pdf处理程序移植到java中,但是由于重新编写代码使得先前的工作成果得不到利用,于是将其编写为dll,再在java端调用. 这使得在java端即便每个分支都到达, ...
- 贝赛尔曲线UIBezierPath
使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线 ...
- 修改github.com域名解析
http://ping.chinaz.com/ 首先在这个网站查询 github.com 然后选择ping速度最好的IP地址 将其填充到hosts文件中.win7路径:C:\Windows\Syst ...
- SQL --- Case when 的使用方法
1. Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' E ...
- 【原创】PageAdminCMS 前台SQL注入漏洞(2)
之前根据公司的要求找了几个web程序的漏洞提交CNVVD,发现漏洞提交上去两个月了,CNVVD却没有任何回应,我提交的这几个漏洞却悄悄的修补掉了. 文章作者:rebeyond 受影响版本:V3.0 漏 ...
- Xcode同一个Workspace中两个工程依赖于Undefined Symbol Error
Workspace中包含两个工程A和B: A是dylib工程,引用了另一个动态库C,B需要链接(依赖)A库.当编译B时,会先编译A,然后把A生成的dylib拷贝到B的生成目录中.如果要运行B的话需要把 ...
- Jquery 插件\Js 插件收集
1.linq.js 使得js 的数组像c#的linq操作一下样 http://linqjs.codeplex.com/ 2.分页插件 https://github.com/mricle/Mricode ...
- 2016百度之星 初赛2A ABEF
只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...
- 【Matlab】特征值
特征值 clc;clear; %[V,D]=eig(A) //求取特征值 A=[ 1 2 4; 4 0 7; 9 1 3 ]; [V,D]=eig(A) 结果如下: 求解特征值与特征向量时矩阵必须是方 ...
- jq 个性的隔行变色
效果图大致这样: 我的html格式部分这样:/*不过他们都说我的dom结构不太合理,同意.BUT,我就是不想写表格而写成的这样的,所以后面jq部分也要迁就了*/ <div class=&qu ...