正则表达式在vim配置文件中不工作
我的一个ftplugin文件中有以下正则表达式,其目的是在按下enter键后用空格分隔赋值运算符:正则表达式在vim配置文件中不工作,vim,Vim,我的一个ftplugin文件中有以下正则表达式,其目的是在按下enter键后用空格分隔赋值运算符: inoremap <CR> <Esc>:s/\s*\([=+!-]\?=\)\s*/ \1 /ge<CR>:noh<CR>o inoremap:s/\s*\([=+!-]\?=\)\s*/\1/ge:noho 它在=、=、!=、+=、-=。到目前为止,这一部分似乎工作得完美无缺。当我按如下方式修改此正则表达式以分隔比较运算符时,会出现问题: in
inoremap <CR> <Esc>:s/\s*\([=+!-]\?=\)\s*/ \1 /ge<CR>:noh<CR>o
inoremap:s/\s*\([=+!-]\?=\)\s*/\1/ge:noho
它在=、=、!=、+=、-=。到目前为止,这一部分似乎工作得完美无缺。当我按如下方式修改此正则表达式以分隔比较运算符时,会出现问题:
inoremap <CR> <Esc>:s/\s*\([=+!-]\?=\|[><]=\?\)\s*/ \1 /ge<CR>:noh<CR>o
inoremap:s/\s*\([=+!-]\?=\\\\\\\\\\;[>尝试指定正则表达式中的magic
:
inoremap <CR> <CR>a<Esc>mz:-1s/\v\s*([=+!-<>]?\=\|[<>])\s*/ \1 /ge<CR>:nohls<CR>`zcl
inoremap-amz:-1s/\v\s*([=+!-]?\=\\\\\\\;[])\s*/\1/ge:nohls`zcl
另外请注意,我使用C-o从插入模式发出替换
崩溃
a
正常执行回车,插入一个伪字符('a'
)
离开插入模式
mz
在寄存器中保存光标位置z
:-1s/\v../…/g
在前一行(-1
)上执行全局替换,并启用非常神奇
:nohls
隐藏搜索突出显示
`z
恢复保存的光标位置
cl
进入插入模式,覆盖前面的虚拟字符
发布了我的光标还原版本。你会发现我的版本在中间分割线时很好用。保留缩进很好,我没有意识到我的版本在用换行符拆分现有行时会中断。我在你的版本中仍然看到的一个问题是,寄存器似乎只在拆分行时起作用,而不是在换行符时起作用,但我似乎不明白为什么。我唯一能想到的是,因为我使用了缩进脚本()而不是常规的smartindentlet
inoremap <CR> <CR>a<Esc>mz:-1s/\v\s*([=+!-<>]?\=\|[<>])\s*/ \1 /ge<CR>:nohls<CR>`zcl