当前位置:首页>编程日记>正文

Vim 80列布局问题

我在Vim中执行80列指示的方式似乎不正确: set columns=80 。 有时我还set textwidth ,但是我希望能够用set columns替代项来查看和预期行溢出。

这有一些不幸的副作用:

  1. 我不能set number ,因为担心在行号顺序不同的文件之间进行拆分; 即<100行文件和> = 100行文件将需要两个不同的set columns值,因为用于额外数字显示的额外列。
  2. 我也开始新的(g)Vim会话,而不是垂直拆分窗口。 这是因为vsplit在每次打开或关闭窗格时强制我set columns ,因此开始新会话的麻烦就少了。

当您要set numbers ,垂直分割等时,如何处理80个字符的指示?


#1楼

较短的方法:

match ErrorMsg '\%>80v.+'

#2楼

这是在左字段之外,但是它有一个不错的小地图,用于在行号位于以下位置时将当前拆分大小调整为80个字符:

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82|:vertical resize <c-r>w<cr> 

#3楼

Vim 80列布局问题 配图01

简约的,非主流的方法。 仅太长的行的第79个字符会突出显示。 它克服了一些常见问题:在新窗口上工作,溢出的单词正确突出显示。

augroup collumnLimitautocmd!autocmd BufEnter,WinEnter,FileType scala,java highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGreylet collumnLimit = 79 " feel free to customizelet pattern = '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'autocmd BufEnter,WinEnter,FileType scala,java let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END

注意:请注意FileType scala,java将此限制为Scala和Java源文件。 您可能需要对此进行自定义。 如果您忽略它,它将适用于所有文件类型。


#4楼

恐怕您对解决方案集施加了约束,好让您留空集。

使用:set textwidth=80可以解决您提到的所有问题, 您不能轻易看到行数限制。 如果:set ruler:set ruler启用状态栏上的x,y位置显示,可用于查看您所在的列。

除此之外,我不确定该告诉您什么。 失去number列,fold列并拆分仅是因为您必须:set columns=80


#5楼

较新版本的vim允许:set numberwidth=x值,该值设置行号显示的宽度。 我实际上并没有使用折叠等功能,因此我对此一无所知。 但是,绘制一条细的垂直线超出了控制台应用程序的能力。 GVim可能允许这样做(我不使用它,所以不能在此处发表评论)。


#6楼

您可以尝试以下方法:

au BufWinEnter * if &textwidth > 8
 | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
 | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.+', &textwidth), -1)
 | endif

这将在每个缓冲区中设置两个突出显示,一个用于突出显示&textwidth之前的8列中的字符,另一个用于突出显示该列之外的字符。 这样一来,您便有了一定程度的期望。 当然,如果您希望或多或少地期望(您以这些列中语法突出显示的损失形式付费),则可以调整它以使用不同的宽度。


#7楼

我在我的.vimrc中进行了设置:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.+/

对于超过80列限制的文本,这会以微妙的红色突出显示背景(无论如何,在GUI模式下都是微妙的-在终端模式下则是如此)。


#8楼

标记仅第一个字符超出指定范围的好方法:

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

从Damian Conway的讲话中 。


#9楼

您也可以画线以查看80个限制:

let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")

结果:

Vim 80列布局问题 配图02


#10楼

西蒙·霍华德的答案很好。 但是/\%81v.\+/无法突出显示超过列81的选项卡。 因此,根据我在VIM Wiki上发现的内容以及HS上面的颜色选择,我做了一些调整:

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.+/

现在,VIM将突出显示超出第80列的所有内容。


#11楼

我更喜欢:

highlight ColorColumn ctermbg=gray
set colorcolumn=80

#12楼

从vim 7.3开始,您可以使用set colorcolumn=80 (简称set cc=80 )。

由于早期版本不支持此功能,因此我的.vimrc使用:

if exists('+colorcolumn')set colorcolumn=80
elseau BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.+', -1)
endif

另请参阅有关colorcolumn选项的在线文档 。


#13楼

好吧,看着:help列,并没有使它变得混乱。

在控制台中,通常由控制台设置确定(即自动检测到); 在GUI中,它确定gvim窗口的宽度(并由其确定)。

因此,通常您只需注释掉set columns即可让控制台和窗口管理器执行工作

我不确定“看到并预期行溢出”是什么意思。 如果希望将EOL粗略插入到第80列,请使用set textwidthset wrapmargin ; 如果您只想进行自动换行(即换行,但没有实际的停产期),请使用set linebreakset showbreak


#14楼

您可以尝试将窗口大小设置为允许80个字符的实际文本。 但是,这仍然不适用于垂直分割。

let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)

这需要vim 7+,相对数为7.3。


http://www.coolblog.cn/news/6ad5fca752857983.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐