Questions tagged «vimscript»

Vim中嵌入的脚本语言。它可以用来自定义Vim以适合您的需求并创建插件。也称为VimL。


2
Vimscript是否有官方名称?
这种语言的名称有时也被称为Vimscript,是一个争论的话题。有些地方使用Viml(或者是VimL?),其他地方则使用Vimscript。它有正式名称吗?如果有,它是什么?从什么时候开始正式使用? 关于VimL vs Vimscript的问题(〜5岁) 最近的一篇帖子提到它有一个正式名称 一系列的:helpgrep \cviml\>尝试导致我们syntax.txt: g:vimsyn_noerror Not all error highlighting that syntax/vim.vim does may be correct; VimL is a difficult language to highlight correctly. 和version7.txt: Added special python-vars objects also available for python-buffer and python-window. They ease access to VimL variables from Python. 因此,这似乎VimL是一个正式术语,但是usr_41.txt,最好地记录了该语言的文件却没有提及VimL。

4
通过交织线合并块
有没有一种专门的方法可以通过插入行来合并两个文本块,就像从下面这样传递: a1 a2 a3 a4 b1 b2 b3 b4 对此: a1 b1 a2 b2 a3 b3 a4 b4 在几个命令? 编辑:我真的很喜欢佐藤桂的解决方案,这是我如何实现它: function! Interleave() " retrieve last selected area position and size let start = line(".") execute "normal! gvo\<esc>" let end = line(".") let [start, end] = sort([start, end], "n") let size …

1
调用:search()后是否可以获得匹配的字符串
在vimscript函数中,我需要l:matched在调用后为变量分配匹配的字符串search(),我想知道是否有比我目前正在做的事情更短的方法: let l:pattern = '\v^Foo: \zs.*' let l:line = search(l:pattern) let l:line_text = getline(l:line) let l:matched = matchstr(l:line, l:pattern) 理想情况下,我想要类似 let l:matched = search_text(l:pattern) 没有诉诸getline()。有没有我似乎找不到的vim函数?
15 vimscript  search 

2
如何检查Vimscript中Vim选项的值?
在Vimscript中,如何检查Vim选项的当前值? 详细地说,我想发出一个命令,从“全GUI模式”(guioptions=+tM)切换到“黑客模式”(guioptions=-tM)。 但是,我似乎找不到解析:set guioptions?值的方法


2
如何从Markdown注释或嵌入式注释生成Vim文档,或者有更好的方法添加文档?
这是一种在一两个问题。最近,我花了很多时间来深入学习vimscript,学习vim的内部知识,并开始编写vim插件。在此过程中,我一直在单独的markdown文件中保留大量注释,并在vimscript文件中添加许多内联“文档”注释。 我觉得我终于有了一些值得共享的代码,并且想要开始添加一些实际文档。我尚未编写任何自己的帮助文档文件,因此我仍在弄清楚该过程。 在没有任何经验或对该工作流程没有扎实的了解的情况下,我正在尝试完成两个任务: 从vim / vimscript上的markdown'notes'文件生成帮助文档,因此我可以随时轻松地从vim中快速读取/引用。 从我的vimscript文件中解析内联文档(类似于shocco用于shell脚本的方式)以生成与该vimscript相关的帮助文档。 关于想法的任何建议或建议(这是一个坏主意,因为...,更好的主意是...),或如何实现它们。

2
cpo&vim是一种特殊的语法吗?
在脚本中,习惯执行以下操作: let s:save_cpo = &cpo set cpo&vim ... script ... let &cpo = s:save_cpo 确保脚本的不兼容模式。 是: set cpo&vim 某种特殊的语法,例如foo & bar?还是更像是命令,触发行或其他?
14 vimscript 

4
如何每4行反转一次?
首先,这是我在这里的第一篇文章,我想说的是,我发现VIM是一个很好的工具,并且这里的论坛对于寻找问题的答案非常有帮助,许多有用的人提供宝贵的帮助。我对VIM还是很陌生,所以我所学到的几乎所有东西都来自这里。 我的问题是:我知道如何反转文件中的所有行(:g / ^ / m0等),但是有一种方式可以反转文件中的每4行,以便 line1 line2 line3 line4 line5 line6 line7 line8 ... 变成 line4 line3 line2 line1 line8 line7 line6 line5 ... 您可以假设在这些文件中总是存在4行的精确倍数。
13 vimscript 


2
执行普通命令后如何恢复光标位置?
我正在尝试编写一个函数,用美元符号($)替换当前行第六列中的字符,但是我希望光标保持在调用该函数之前的位置。 因此,我尝试存储当前列,执行更改,然后返回以下函数: function! DollarSplit() let col_number=col(".") "stores the current column number of the cursor normal! 6|r$ " replaces the 6th caracter in line with a $ execute col_number."|" endfunction 我可能对execute命令有一些误解...或者我应该创建一个包含要执行的命令的字符串?



4
命令遍历拼写建议
我映射zz到1z=,这在大多数情况下是很好的,但是时不时地,第一个建议不是正确的建议。 因此,我想继续重复zz(或.)循环浏览其他建议。 zz那么,在同一个单词上的第二u2z=个zz将像一样工作,第三个将像一样工作u3z=,依此类推。 关于如何做到这一点的任何想法? 编辑: 基于@ nobe4的出色回答,我设法完成了我想做的事情,但是如果有人有任何改进或建议,我会在这里待一会儿: let s:spell_position = [] let s:spell_count = 0 let s:spell_word = "" function! LoopSpell() if s:spell_position != getpos('.') || \ (s:spell_count > 0 && s:spell_word !~ expand("<cword>")) let s:spell_count = 0 let s:spell_position = getpos('.') endif if s:spell_count > 0 silent execute "normal! …

3
用纯vimscript代替(不带`:s`)
我的vimrc中有以下内容: func! AddSpaceBeforeEqual() s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge endfunc 我正在使用vint整理我的vimrc,并收到以下警告: ProhibitCommandWithUnintendedSideEffect 避免具有意外副作用的命令。避免使用:s [ubstitute],因为它会移动光标并显示错误消息。首选更适合脚本的函数(例如search())。对于许多vim命令而言,存在执行相同功能且副作用较少的函数。有关内置函数的列表,请参见:help functions()。Google Vimscript样式指南 但是,我不认为它们是不使用:s命令即可进行替换的方法。 例如,该search()函数提供与模式匹配的行,但是无法进行替换。该substitute()函数在字符串上操作,并且不能替代整个文件。 我应该自己实现替代方法,还是它们是重写我的函数的更明智的方式?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.