我在努力学习vimscript。我在“艰难地学习vimscript”中读了很多书,但是找不到我的问题的答案:
如何判断搜索在vimscript中是否成功?我有两个案子:
:if there's a ( on the current line
do foo
:endif
:if /searchtarget succeeds
do bar
:endif
一个简单的例子: function! Foo()
echom 'Starting Foo'
let x = Bar(123) " Function does not exist so E117 occurs.
echom 'Nonetheless, this executes.'
endfunction Vim是否具有在出现任何错误时中止函数或脚本的机制--换句话说,在本质上类似于bash set -o errexit 为了清楚起见,我了解了如何将容易出错的代码包装在try-catch..。我正在寻找一种通用机制,使Vim脚本
我有以下VimScript命令:
let str="abc"
echo str # => abc
echo str[1] # => b
let str[1]="@" # => E689: Can only index a List, Dictionary or Blob
在赋值中,VimScript似乎不支持字符串索引。所以我的问题是,我怎样才能辞去str的第二个角色,使它成为a@c
我目前的解决办法是:
let str=substitute(str,"\\%2c.","@","&
我正在用vimscript编写一个函数,它需要保存从当前工作目录开始的所有更改过的、列出的缓冲区。如果可能,此操作需要在后台进行,而不更改当前的活动缓冲区或光标位置。
function! SaveChangedBuffers()
for buf in getbufinfo({'buflisted':1})
if but.changed && buf.name =~ getcwd()
echo buf.name
"write buf.name <-- how to do this
我有一个Vimscript函数,定义如下:
function Cs(a, b)
normal a:a|"cylr a:b|x"cP
endfunction
然而,预期的操作(在正常模式下使用参数a和b做一些疯狂的事情)不起作用,相反,它将第一个"a“作为"append”,并将该行的其余部分写入文件。
如何在Vimscript中的“正常”语句中使用参数?我发现没有办法做到这一点。
我试图在Ctrl上打开一个文件。如果命令是在空缓冲区'None'存在的情况下键入的,那么我希望在该缓冲区中打开文件,但是如果没有空缓冲区,我希望使用:tabnew打开一个新缓冲区,然后在其中打开文件。为此,我有一个函数OpenFile,它被调用。
function! OpenFile()
python << EOF
import vim
import re
buffer = vim.current.buffer
name = str(buffer.name)
if re.match('None', name):
vim.command(
我正在尝试编写一个vimscript函数,它将扩展执行以下操作:
if (condition) { /*Press enter here*/ }
// Turns into this
if (condition)
{
//Cursor gets placed here
}
评论没有包括在内,他们只是说发生了什么。
我首先在insert模式下映射enter键。
inoremap <expr> <cr> OpenBrackets()
接下来,我开始编写函数。然而,我并不擅长vimscript,所以我不知道如何去做。下面是伪代码:
function! OpenBrac
我把笔记放在笔记本电脑上的控制台vim中,我想在我的笔记中添加语法高亮,以增强它们。但是,我不想为每一个知识领域添加一百万种不同的文件类型(例如,我在编译器上的注释将有不同于我在FHS上的注释的关键字),我也想让分享这些注释变得容易。在做了一些研究之后,我发现我可以得到我想要的行为,但这似乎不是一个非常优雅的解决方案。我在我的.vimrc中添加了以下行
if (filereadable("./.custom_syntax.vim")
let mysyntaxfile = "./.custom_syntax.vim"
syntax enable
else
在~/.vimrc中,我有两行代码:
set textwidth=80
au FileType vim set textwidth=200 " I like to live dangerously
当我打开vim时,set tw会像它应该的那样显示200。但当我使用:source ~/.vimrc时,set tw会显示80。这一点在set colorcolumn=+1中表现得更加清晰。
这是一个特别恼人的边缘情况,因为有一次我会在编辑.vimrc的同时不断采购.vimrc,否则我可能会忽略这个问题。
我的问题是:我做错了什么吗?