我正在尝试计算一行中正则表达式匹配的数量,我需要在 vim 函数中使用结果。例如,计算左大括号的数量。
function! numberOfMatchesExample(lnum)
let line_text = getline(a:lnum)
" This next line is wrong and is the part I'm looking for help with
let match_list = matchlist(line_text, '{')
return len(match_list)
endfunction
Run Code Online (Sandbox Code Playgroud)
所以我想在 vim 函数中找到一种方法来将一行的正则表达式匹配数捕获到一个变量中。
有很多示例说明如何执行此操作并在状态栏上显示结果,请参阅
:h count-items,但我需要将数字捕获到变量中以便在函数中使用。
我似乎无法在Vim中使用这种模式:( \d{4}但只能使用\d\d\d\d)搜索时; 有什么想法吗?
注意:
/在Normal Mode和类型化的模式.我使用Clojure规范来规范一个简单的数据结构:
{:max 10
:data [[3 8 1]
[9 0 1]]}
Run Code Online (Sandbox Code Playgroud)
该:data值是从零到包含:max值的区间中的等大小整数向量的向量.我用以下规格表达了这个:
(s/def ::max pos-int?)
(s/def ::row (s/coll-of nat-int? :kind vector?, :min-count 1))
(s/def ::data (s/and (s/coll-of ::row :kind vector?, :min-count 1)
#(apply = (map count %))))
(s/def ::image (s/and (s/keys :req-un [::max ::data])
(fn [{:keys [max data]}]
(every? #(<= 0 % max) (flatten data)))))
Run Code Online (Sandbox Code Playgroud)
自动发电机适用于前三个规格,但不适用::image.(s/exercise ::image)100次尝试后总是失败.
我试图创建一个自定义生成器,::image但没有管理.我不知道如何表达跨越嵌套结构层的:max约束(键约束其他地方的向量中的值).
是否可以创建一个生成::images 的Clojure spec/test.check生成器?
我正在寻找一种方法来改变LaTeX文档中间的一些页面布局尺寸.原因是,我希望在我的report文档的"参考"部分中有更小的边距和更长的线条(基本上因为短线在那里不那么重要,我可以节省空间).
在我的序言中,我(工作正常):
\setlength\textwidth{130mm}
\setlength\oddsidemargin{14.6mm}
Run Code Online (Sandbox Code Playgroud)
在文档中,我只是尝试在正确的位置重新设置它们,但它们被忽略了.
... last paragraph ends here.
\newpage
\setlength\textwidth{150mm} % +20mm text width
\setlength\oddsidemargin{13.6mm} % -10mm left margin (so it stays centered)
References ...
Run Code Online (Sandbox Code Playgroud)
该geometry软件包很有用,但仅适用于序言中的全局调整,因此我不能在此处使用它.是否无法在文档中的某个位置更改页面布局?
我正在尝试使用DMA将数据发送到SPI1.然后SPI1将控制DAC以进行电压更新.
使用的芯片是STM32F407.因此,相应的频道/流是:channel3/stream5,如参考手册中所示.但是,当DMA使能时,SPI1-> DR中不显示任何数据,示波器中没有显示结果.
当SPI1-> DR由软件写入时,SPI工作正常.谁能帮忙看看发生了什么?代码如下:
uint16_t DACData[1];
void InitDMA(void)
{
DMA_InitTypeDef DMA_InitStructure;
DMA_Cmd(DMA2_Stream2, DISABLE);
while (DMA2_Stream2->CR & DMA_SxCR_EN);
//SPI1 Tx DMA
DMA_DeInit(DMA2_Stream5);
DMA_StructInit(&DMA_InitStructure);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); //Init DMA clock
DMA_InitStructure.DMA_Channel = DMA_Channel_3;//SPI1 Tx
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR); //Set the SPI1 Tx
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&DACData; //Set the memory location
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; //
DMA_InitStructure.DMA_BufferSize = 1; //Define the number of bytes to send
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //Normal mode (not circular)
DMA_InitStructure.DMA_Priority …Run Code Online (Sandbox Code Playgroud) 当我评估以下core.async clojurescript代码时,我收到一个错误:"Uncaught Error:<!used not in(go ...)block"
(let [chans [(chan)]]
(go
(doall (for [c chans]
(let [x (<! c)]
x)))))
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?它绝对看起来像<!是在阻止.
我正在尝试将我的Alt+ x组合重新映射到NERDTree Enter功能.让我解释一下:当我浏览NERDTree中的文件/文件夹时,我可以打开文件/扩展文件夹Enter.
我想用左手键组合来做这个,比如Alt+ x.我试图将这些密钥重新映射到,<CR>并且<Enter>都没有工作:
# in ~/.vimrc
nnoremap ? <Enter> " doesn't work
nnoremap ? <CR> " doesn't work
nnoremap ? <CR><Enter> " doesn't work
Run Code Online (Sandbox Code Playgroud)
当我说"不工作"时,我的意思是当我在浏览文件/文件夹时按Alt+ x,我移动到下一个文件/文件夹(我想这就像移动到下一行).
注意我在Mac上,所以?实际上是Alt+ 的输出x(它是用其他映射测试的).
我应该重新映射什么?
在我的Mac,我使用MacVim与homebrew我的大多数编辑的.
~|? vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 20 2012 13:16:02)
Compiled by root@apple.com
Normal version without GUI. Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs
-dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path
+find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent
+listcmds +localmap …Run Code Online (Sandbox Code Playgroud) 我使用的是vim 7.3,在OS X 10.8.3上通过自制软件安装.出于某种原因没有W或E按预期工作在正常模式.它不是一次向后移动一个单词,而是向前移动.行为W是相同的w.和行为E是一样的e.
我已经在正常模式下尝试了o和O命令,它按预期工作,所以它不像我的shift键坏了.
这让我疯狂,因为它是我无法工作的核心功能.我试过擦除我的vimrc和vim目录并更改shell.
对于任何能够为我解决问题或者如何诊断问题提供良好建议的人,我都会答应.
我经常使用VIM在报纸或博客网站上撰写评论.
通常需要输入最多字符数.
如何在键入时创建一个计数器(状态栏中的pe)以查看我键入的字符(包括空格)?