Questions tagged «vimscript»

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


2
您如何找到最后分配变量的位置?
我正在尝试设置g:netrw_list_hide,但似乎不起作用。无论我将其设置为什么,.vimrc它始终具有价值,^\.\.\=/\=$。仅当我vimrc再次获取文件时,它才具有正确的值。 我该如何调试?我猜有一些插件正在设置该变量?可能在vimrc加载后,所以我想看看它的设置位置。

1
在Vimscript中获取当前的窗口/缓冲区/标签页
在python中,使用vim模块时,获取当前的window / buffer / tabpage非常简单: current_win = vim.current.window current_buff = vim.current.buffer current_tabpage = vim.current.tabpage 我的问题是,如何在纯VimL / Vimscript中执行此操作,并返回哪种类型的对象?我真的似乎在windows.txt(:h windows)的任何地方都找不到它。

1
如果不是endif oneliner
我的内胆里有这个,vimrc但它不起作用: if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif VIM说: E518: Unknown option: else 你能帮助我吗 ?
11 vimscript 


2
是否可以在Vimscript中使用委托或将函数作为参数传递?
我正在尝试创建一个小的插件来学习vimscript,我的目标是创建一些函数来处理选定的文本并将其替换为结果。该脚本包含以下各项: 两个处理文本的函数:它们将字符串作为参数,然后返回该字符串,该字符串应用于替换原始文本。目前,我只有两个人,但不久之后可能还会更多。 获取所选文本的函数:只需拉动最后的选择并返回它。 包装函数:调用处理函数,获取其结果并将该结果替换为旧选择。 现在,我的包装器函数如下所示: function! Wrapper() " Get the string to insert let @x = Type1ProcessString(GetSelectedText()) " remove the old selection normal gvd " insert the new string normal "xp endfunction 我必须创建第二个包装器,将第3行替换为 let @x = Type2ProcessString(GetSelectedText()) 我想给包装器函数一个参数,该参数包含要执行并在第3行中使用通用调用的Process函数。现在,我尝试使用call不同的方法,例如: let @x = call('a:functionToExecute', GetSelectedText()) 但是我并没有真正取得成功,:h call也没有对委托主题真正有所帮助。 总结一下,这是我的问题: 我如何只为所有处理函数提供一个包装函数? 在vimscript中有什么可以充当代理的吗? 如果不存在代表,那么做我想要的事情的“好”方法是什么?

3
如何获得视觉上的vimscript选择?
如果在插入vimrc之前要测试几行vimscript,是否可以直观地进行选择,然后提供它们? 我努力了 进行视觉选择v,然后进行动作进行选择等,然后 :'<,'>so 但是vim给出了一个错误 不允许范围 也 :'<,'>w | so 给 采用 !写部分缓冲区 如何获得视觉选择的vimscript?


2
创建vim插件应遵循什么步骤?
所以我的问题很简单。学习vim脚本只是为了创建vim是一个好主意,还是我们应该采用其他一些更被接受的语言。 例如,此链接打开一个YouTube视频,其中显示了如何使用Python创建vim插件。 除非有人打算创建一些vim插件,否则Vim脚本并不完全有用。那么,除非仅使用vim脚本,否则还有什么事情是做不完的吗?
11 vimscript 


3
如何在ex命令输出中grep?
如何在ex命令输出中搜索模式?例如,如何在:scriptnames命令输出中搜索文件名模式?在帮助的所有口味grep和vimgrep只有{file}在何处进行搜索的地方。
10 vimscript 

1
在功能完成之前,禁止刷新屏幕
我有一个功能,可以将大量文本移动并输出到当前的vim缓冲区中,当我运行它时,看到以盲目速度发生的所有事情让人有些不安。 在功能完成之前,如何冻结屏幕? 这是有问题的功能: function! MakeChoices() :let save_view = winsaveview() let start = line('.') "Locate previous *choice. (b=backwards, W=nowrap, n=doNot move cursor) let choiceStartLine = search('^*choice', 'bW') if !choiceStartLine echo "No *choice found. (*choice must not be indented. This is to avoid finding *choice blocks nested in another *choice block.)" return …
10 vimscript 

1
将缓冲区内容作为vimscript执行
我有一个nofile包含vimscript 的缓冲区,我想执行它。但是,:so % 由于它需要保存的文件而不是缓冲区,因此将不起作用。默认情况下有vim命令执行此操作吗?如果不是,是否可以创建一个执行相同功能的函数?

1
是否可以在rc文件中创建自定义的“ set”命令并从modeline调用它们?
最近我问了一个问题,我知道除了:set在vim模式行中传递参数外,什么都不可能传递。我了解安全问题,但是我想知道是否还没有其他解决方法。关于SO的最近一个有关设置大批参数以符合编码标准的问题使我开始思考-是否可以在rc文件中定义可以通过modeline打开或关闭的一组事物? 请问伪代码,但是有没有办法创建从设置参数触发的函数? set_function! codestyle() if &1 == 'psr-2' set ts=4 set sw=4 endfi if &1 == 'drupal7' set ts=2 set sw=2 iab D8 Drupal 8 endif endset_function 然后,可以由诸如 # vim: codestyle=psr-2 在某些方面,这类似于文件类型匹配,但允许手动覆盖。它还将以其他预定义的方式设置环境,避免了使文件在vim中运行其他任意命令的安全问题,但允许使用更自定义的环境。有没有办法做到这一点?


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.