function - vim 中的函数来修复引号
问题描述
我正在尝试在 vim 中创建一个函数以通过快捷方式激活并浏览我的文档并使用类似 Python 的语法重新引用字符串。那是:
"something"
->'something'
'''docstring'''
->"""docstring"""
"'"
->"'"
(保持不变)'"'
->'"'
(保持不变)
鉴于我对 python 函数的了解有限,我在我的.vimrc
:
function! Fixquotes()
:silent! %s/"\([^"]*\)"/'\1'/g
:silent! %s/'""/"""/
:silent! %s/""'/"""/
:silent! %s/'''/"""/g
endfunction
inoremap <C-f> <esc>mk:call Fixquotes()<CR>`kli
noremap <C-f> mk:call Fixquotes()<CR>`k
它有点工作,除了我"'"
自从第一次替换将它变成'''
并且最后一次将它变成"""
.
有人有什么建议吗?
解决方案
试试这个:
function! Fixquotes()
:silent! %s/\v([^'"]|\_^)\zs"([^"']*)"\ze([^'"]|\_$)/'\2'/g
:silent! %s/'''/"""/g
endfunction
推荐阅读
- laravel - vue 文件中的更改未在浏览器中应用
- bash - cURL 在读取文本文件时使用 bash 脚本
- c++ - 如何为 QMessageBox 中的特定标签设置 StyleSheet?
- javascript - JavaScript 用零替换空逗号
- javascript - 如何检测`XMLHttpRequest`响应HTTP代码
- r - 一维 CNN 的输入形状
- apache - 更新 Directadmin 后无法启动 Apache HTTP 服务器
- javascript - 带有 for 循环的函数:为什么 1 不被 5 覆盖?
- c - 将大数作为单独的数字存储在数组中
- php - 从数据库搜索时如何避免空白的第一个结果