Function 从vim函数内部更改光标下的单词
我想写一个函数,它增加/减少文本的大小。例如,当光标位于单词\footnotesize上方时,我想调用Function 从vim函数内部更改光标下的单词,function,vim,Function,Vim,我想写一个函数,它增加/减少文本的大小。例如,当光标位于单词\footnotesize上方时,我想调用Tex\u ChangeSize(-1)将其更改为\small,调用Tex\u ChangeSize(1)将其更改为\normalsize 我所拥有的是: function! Tex_ChangeSize(direction) let sizes = ["tiny", "scriptsize", "footnotesize", "small", "normalsize", "large"
Tex\u ChangeSize(-1)
将其更改为\small,调用Tex\u ChangeSize(1)
将其更改为\normalsize
我所拥有的是:
function! Tex_ChangeSize(direction)
let sizes = ["tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", "Large", "LARGE", "huge", "Huge"]
let cursize = index(sizes,expand("<cword>"))
if cursize != -1
"FIXME: replace current word under cursor with the following
echo sizes[cursize + a:direction]
endif
endfunction
imap <C-h> <C-o>:call Tex_ChangeSize(-1)<Enter>
imap <C-g> <C-o>:call Tex_ChangeSize(1)<Enter>
功能!Tex_ChangeSize(方向)
让大小=[“微小”、“脚本大小”、“脚注大小”、“小”、“正常大小”、“大”、“大”、“大”、“大”、“大”]
让cursize=索引(大小,展开(“”)
如果用粗体字!=-1.
“修复:将光标下的当前单词替换为以下内容
回声大小[光标+a:方向]
恩迪夫
端功能
imap:调用Tex_ChangeSize(-1)
imap:调用Tex_ChangeSize(1)
我不知道的是,如何替换光标下的单词(请参阅FIXME)。
更准确地说:有没有比解析
getline(line('.')
并用setline()
将其设置回更好的方法呢?getline+setline是一个更整洁的选择,因为它不会弄乱任何寄存器(既不是@
也不是@/
),但是,在utf-8环境中,也可以使用制表符(\t),查找当前单词的限制有点棘手。(col('.)
+match()
将执行此操作;有关示例,请参阅)
您还可以有一个nnoremapping,它使用s:ChangeSize()
执行一个简单的cw=ChangeSize(1)
,该函数测试@
以查看下一个要返回的符号——在这种情况下,不弄乱@
很简单
您还可以正常使用:exe!如果您不希望函数返回任何内容,请在函数中使用“\u cw”.new\u word
”