Questions tagged «vimscript»

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

5
在Vimscript中检测操作系统
我可以使用纯 Vimscript(没有Python或Perl)检索当前的操作系统(Windows,Linux,OS X等)吗? 我想为正在使用的不同类型的操作系统在(同步的).vimrc中启用不同的设置。
38 vimscript 

5
如何使用可选参数制作vimscript函数?
我想制作一个具有可选参数的函数。 在python中,我将执行以下操作: def functionName(arg1,arg2=false,arg3=false): if arg2: #Do stuff with arguments else: #Do stuff without arguments 我已经尝试做过function FunctionName(arg1,arg2=false,arg3=false),但是这只会给我一个错误,指出参数无效。 我该如何在vimscript中执行此操作?
33 vimscript 

3
你如何在Vim中“ chomp”一个字符串?
假设您运行以下vimscript: let @z = system("date") 这会将当前日期的字符串版本放入z寄存器,但是该字符串将以不需要的换行符结尾。是否有内置方法(类似于Perl的方法chomp)来消除字符串的尾随换行符?
32 vimscript 

1
在IF语句中使用条件运算符AND或OR?
这可能是一个非常简单的问题,但是到目前为止,我还没有找到任何答案(我必须缺少正确的消息来源,而且我不知道在vim帮助下可以找到哪里)。 我有一个条件,我希望它包含“ AND”,例如 if (condition1 .AND. condition2) "do what I want you to do endif 但我找不到语法。“ OR”也一样。
30 vimscript 

2
let和set有什么区别?
我不太了解Vim背后的理论。好像我们set有些变量,还有let其他变量。有什么区别,什么时候需要一个? 此外,日晒过的vim色彩设计说明这种情况let g:blabla...的意义是g:什么?
29 vimrc  vimscript 

6
我怎样才能真正在Vim中玩得开心?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Vi和Vim Stack Exchange 的主题。 3年前关闭。 我爱Vim。我一生都在用它:在工作中,我用Vim开发代码,用它编辑配置文件,用它写电子邮件。在家里,我用它写了我的待办事项清单和我的遗愿清单。有空的时候我会写一本书。我参加了有关Vim的聚会,并试图说服我认识的每个人使用它(不幸的是,我的祖母不同意她应该使用它来写信给她的朋友)。 带着对我们心爱的编辑的种种热爱,我面临着一个巨大的问题:作为一个正常构成的人,我有时想放松身心并享受乐趣。自然,我想在我们敬虔的编辑器中这样做,但我不知道该怎么做。当然,我花了几个小时自定义我的配色方案并编写了我长时间观看的递归宏,但是连续六,七个小时后,它就不再那么有趣了。 因此,我打电话给您,Vimmers同学:我如何在Vim中玩乐? 编辑这篇文章显然是4月的傻瓜(当然,我的祖母喜欢使用Vim)。谢谢大家的回答和评论,提出了一些非常酷的想法!
25 vimscript 

1
静默调用Vim函数
我写了一个Vim小函数,将光标移动到当前行的第一个字符。如果光标已经在第一个字符上,则将光标移到第一列。 " Jump to first character or column noremap H :call FirstCharOrFirstCol()<cr> :function! FirstCharOrFirstCol() : let current_col = virtcol('.') : normal ^ : let first_char = virtcol('.') : if current_col == first_char : normal 0 : endif :endfunction 如何静默调用此函数?我宁愿':call FirstCharOrFirstCol()'不在状态行中显示。仅仅更改为noremap H :silent call…似乎还不够。
25 vimscript 


2
将shell命令的结果提取到.vimrc文件中的变量?
在我的.vimrc文件中,我想将外部命令的结果存储在变量中,以我为例: $ echo $LANG 这样我的vimrc文件将具有: let language = output(!echo $LANG) if language == 'en' nnoremap <somekey> <ohanotherkey!> end if 到目前为止,我还没有找到方法。我发现在命令模式下,:read !echo $LANG会将所需的内容插入到当前文件中。但是我不知道如何将其记录在vimrc文件中。

2
在私有模式下启动Vim的最简单方法
我希望能够以私有模式轻松启动Vim。让我们将专用模式定义为一种利用以下命令的模式: set history=0 set nobackup set nomodeline set noshelltemp set noswapfile set noundofile set nowritebackup set secure set viminfo="" 让我知道您是否可以想到适用于私有模式的任何其他命令。 关键是我无法想到使用此设置启动Vim的任何简便方法。 这是我提出的一些想法: 加载.vimrcprivate而不是.vimrc 您可以简单地将所有必要的命令放入.vimrcprivate并像这样启动Vim: vim -u .vimrcprivate 定义并调用Private()函数 另一个想法是将这样的代码添加到您的.vimrc中: function Private() " set of commands here endfunction 然后就可以像这样在私有模式下启动Vim了: vim -c 'call Private()' 使用变量触发命令设置 它与第二种解决方案非常相似。只需添加 if exists('privatemode') " set of commands …


5
将视觉选择复制到键盘后,返回到原始位置
当我突然决定需要复制该段落时,光标位于段落的中间: 因此,我键入vip以直观地选择该段落: 现在,我点击cmd+C复制到剪贴板(这可能在您的系统上有所不同,但不应与帖子的中心问题相关),这使我的光标停留在该段的开头: 而不是理想的位置,那是我刚开始时的位置。 请注意,当用非视觉方式取消选择时,会出现相同的问题yip。 在执行这样的选择/复制操作之后,我希望默认行为是“返回到原始光标位置”。是否有配置使之成为可能?

2
set和:set有什么区别?
我在看Tim Pope的vim敏感插件,并在自述文件中注意到了这一点。 有关功能的权威列表,请参见源。(不用担心,主要是:set电话。) 当我查看来源时,:set呼叫就像这样... set autoindent 有没有:前set。 我很确定我也确实:set在example实例中见过.vimrc。 有什么区别? 我应该使用哪种形式.vimrc?
17 vimscript  vimrc 

1
为什么在此自定义命令上出现“ E488:尾随字符”错误?
我有一个~/.vimrc包含以下内容: function! NewFile() let filename = input("Filename:") endfunction command NewFile :call NewFile()<cr> (当然,我的实际.vimrc情况更复杂,但是我已经重新创建了这个没有插件等的小型测试用例。) 我的意图是编写一个支持根据模板创建新文件的功能。vi用户将询问一些输入项,例如文件名。 该功能还不那么复杂(轻描淡写!)-它所做的只是索要文件名。当我NewFile从vi命令行使用该命令时,它将启动,但是一旦我输入文件名并按Enter,就会收到错误消息: E488: Trailing characters 这是为什么?我究竟做错了什么?

4
设置粘贴选项,但仅一次插入
我想有一种快速的方法来设置Vim 'paste'选项,插入一些文本,并恢复为以前的值'paste'。 一个典型的用例是按字面意义插入OS剪贴板内容,而不考虑任何可能处于活动状态的插入方式重写(例如自动缩进),并且不更改Vim的状态。另一个用例是允许OS宏功能将击键注入Vim,并将其解释为文本。 显然,这可以归结为其他选项-总体思路是设置一些选项,但仅在通过插入模式进行一次旅行的持续时间内。 基本上,我想将键序列(例如_i)绑定到执行此操作的宏 :set paste i…<Esc> :set nopaste 在这里,i…<Esc>我的意思是切换到插入模式(与i命令一样)并在返回命令模式时恢复宏,除非我想以'paste'仍然处于活动状态(如果事先处于活动状态)而结束。我怎样才能做到这一点? 注意:OS剪贴板的内容已映射到"*register。在这种情况下,该'paste'选项不是很有用。这个问题的动机场景是在那些"*不满足注册支持条件的情况下— Vim没有使用该+xterm_clipboard功能进行编译,或者它运行在诸如Screen或通过SSH的终端中,从而将其与环境X服务器隔离。

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.