我正在尝试使用.vimrc中的vim设置和vim函数的组合,以在输入')'时使光标向右移动(如果已经存在')'的话)。到目前为止,我已经尝试将以下内容添加到我的.vimrc文件中:
inoremap ) <Esc>:source PATH/TO/Function.vim<Enter>
Function.vim
类似于
if getline('.')[col('.')] == ')'
" move cursor two spaces right and re-enter insert mode
else
" move cursor one space right, enter insert mode, type ')'
endif
我可以使用哪些命令来操作.vim脚本文件中的光标?我应该完全使用其他方法吗?预先感谢!
答案 0 :(得分:1)
我很确定这是重复的。
所有有关光标位置的信息。当光标位置从1开始而字符串索引从0开始时,需要负1的偏移量。另外,:imap-<expr>
可以简化操作(因为没有光标远距传送),i_CTRL-G_U
也可以使映射可重新移动。最后,这就是所有包围式插件的作用,这里是mine。
inoremap <silent><expr> ) getline('.')[col('.')-1] == ')' ? '<c-g>U<right>' : ')'
PS:您当然不想在这里来源文件。这将是非常过分的,并且在某些不幸的情况下会非常缓慢。
答案 1 :(得分:1)
您可以使用此:
inoremap <expr> ) getline('.')[col('.')-1]==')' ? '<c-g>U<right>' : ')'
<expr>
标签告诉vim将)
映射到右侧表达式的结果。在此,如果光标下方的符号是(
,它将是<right>
,否则它将打印)
。