- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新
已提交 issue , 已在 Vim 8.1.1061 中修复.
我正在编写一个简短的脚本,用于向 Vim 中的 .srt 文件添加延迟。
核心功能实际上可以是一个单行替代命令,搜索时间码并引用一个辅助函数,该函数将其参数转换为毫秒,进行数学运算,然后将结果转换回时间码格式。
但是,我想做一个额外的检查——如果有任何新值是负数,那么抛出一个我想处理的异常。给定一个格式正确的字幕文件,时间码行的顺序正确,我们可以假设异常将在第一次匹配时抛出,如果有的话,所以不需要担心状态变化 - 至少我是这么想的。
fun! s:DelayTimecodes(delay)
try
let saved_view = winsaveview()
let timecode = '\v\d{2}:\d{2}:\d{2},\d{3}'
exe 'keepjumps keeppatterns %s/' . timecode . '/'
\ . '\=s:DelayedTimecode(submatch(0), a:delay)/g'
catch 'illegal timecode value'
redraw | echo 'Cannot apply: the given delay time would result'
\ . ' in negative timecode value(s)'
finally
call winrestview(saved_view)
endtry
endfun
DelayedTimecode
抛出异常时内
\=
表达式,第一个匹配行上的匹配项仍然被替换为空字符串。作为临时解决方案,我编写了一个循环,逐行执行替换,首先创建整个延迟行(可能会引发异常),然后将其传递给替换命令。这工作正常,但感觉过度设计可笑。
最佳答案
异常(exception)不适用于 sub-replace-expression
.你可以在 Vim 的 bug tracker 上提出问题,或者直接在 vim_dev mailing list 上讨论这个,但很可能这被归类为特定于实现的行为,并被搁置一旁。
最简单的解决方法是只返回原始匹配项( submatch(0)
)而不是抛出异常(使 :substitute
成为无操作),并设置一个内部标志,使表达式对以下每次调用执行相同的操作:substitute
中的表达式.然后,之后,您可以检查该标志并打印错误消息,就像您现在在 :catch
中所做的一样。 .
如果您想避免任何缓冲区修改(也将其标记为已修改),您必须:call search()
定位第一个时间码实例,提取它( getline()
, matchstr()
),并在实际 :substitute
之前做检查.
关于当子替换表达式中抛出异常时,Vim 替换空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54619021/
我有一个包含在父 ScrollView (不是直接 subview )中的子 ScrollView 。我想要的是,一旦子 ScrollView 到达其内容的末尾,父 ScrollView 就开始沿相同
我有一个典型的 MVVM 场景: 我有一个绑定(bind)到 StepsViewModels 列表的 ListBox。 我定义了一个 DataTemplate,以便将 StepViewModels 呈
我的 firebase 数据库的结构如下图所示 image of my firebase DB stucture 每当有新消息时,它都会添加到特定的 ID 下,如图所示,它是“59a004ce9bfe
基本上,我的目标是尝试为整个 Web 项目创建一个键盘 Controller ,并且我希望能够保留在父文档上创建的键绑定(bind),并让子 iframe 继承它们。这可能吗? 这是我现在拥有的示例设
我正在开发一个 asp.net 网络应用程序。 有一个母版页的子窗体。母版页没有定义任何高度,但它为 子窗体 定义了一个 X px 高度。 在子表单上它有一个 fieldset 容器,在这 2 个 t
我有一个包含 PictureBox 和 Label 的 UserControl。控件在不同的事件(例如 onMouseEnter、OnMouseLeave)时在 PictureBox 中加载三个不同的
我有一个 viewpager,在其中一个 fragment 中,我有两个单独的 fragment ,分别包含一个垂直和一个水平的 recyclerview。 当我将水平 recyclerview 滚动
我正在尝试抽象一个我在应用程序中经常使用的模式,我可以在另一个屏幕中使用它,该屏幕应该发送来自另一个屏幕内的 TextInput 组件的 Prop 。问题是,当我将 TextInput 组件留空时,它
嵌套滚动? 我在 PageView 中有三个垂直页面我希望能够在两者之间切换。 页面由可滚动的 ListView 组成s。 当页面处于焦点时,显示的列表应该是垂直可滚动的,但是当列表滚动到任一端时,我
这个问题的 jsFiddle 可以在这里找到:http://jsfiddle.net/Hsw9F/1/ JavaScript(console.log 调试信息可在 jsFiddle 中找到) var
HTML: Software Update 2010
我正在制作一个响应式网站。我有 3 个 div (.block),我需要将它们水平放置在一起。 当屏幕足够宽时,这很容易实现。但是,当我使浏览器更窄时,第三个 div (3) 换行到下一行,但我想要的
资源和背景 https://jsfiddle.net/wwx100f8/69/ 我正在尝试创建一个可扩展/可折叠的 Accordion 来容纳餐厅的食物选项,这是一个类似于 Just-Eat 或 Hu
我有一个嵌套的 ViewPager,效果非常好。唯一的问题是,一旦子 ViewPager 位于最后一项并且我进一步滚动,父 ViewPager 就会滚动。我不想要这种行为。 我如何实现这一目标? 这是
例如,我有主要 Activity 。我打电话的地方: Intent callchild = new Intent(this, childActivity.class); startActivity(c
我有一个定义 FormGroup 的 Angular 组件,它有一个嵌套的 FormGroup 作为它的控件之一。 子 FormGroup 作为 @Input 参数传递给子 component,并且在
这个问题与another question I asked有关 基本上,我有 2 个水平对齐的 div。两者都位于名为“.Parent”的 div 中,因此结构如下: s
基本上我需要 div.content 具有 15px 的默认填充,除非 div 具有子 div.products-list。如果 .products-list 的子 div 存在,我需要 div.co
代码笔:http://codepen.io/anon/pen/qaVRqw 我试图让 innerDiv 在文本超出父 div 之前换行文本。让所有文本都显示在 innerDiv 中但又被换行的最佳方式
我有一个名为 main 的父 div。它有一堆子 div,我向左或向右浮动。 当我完成最后一个 float 时,主 div 的高度完全消失,打乱了我的页面布局。我给了它一个高度:100%;只是现在,但
我是一名优秀的程序员,十分优秀!