vim - Vim 高级多行编辑
问题描述
我正在尝试使用更高级的 vim 功能。人们将如何进行以下编辑?
由此:
ssn=token_payload.fnr,
fname=token_payload.displayName,
email=token_payload.email,
login=token_payload.username,
对此:
ssn=token_payload['fnr'],
fname=token_payload['displayName'],
email=token_payload['email'],
login=token_payload['username'],
解决方案
命令行 :norm 命令
我会将以下常规命令应用于文件中的所有行:
" note that in the real command, <Esc> would be a literal
" press of the escape key (see explanation below)
:%norm f.s['<Esc>f,i']
- 适用于整个文件:
%
- 以下正常模式命令:
norm
- 移至以下时期:
f.
- 用左方括号和引号代替:
s['
- 转义插入模式(按 ctrl+v 输入文字字符,然后转义 - 你会看到一个灰色符号出现):
^[
- 移至逗号:
f,
- 插入引号和右方括号:
i']
我最近开始使用命令行方式而不是宏,因为我发现您可以更轻松地考虑它(特别是如果您在命令缓冲区中使用 -see 组合命令q:
):help command-buffer
。
使用宏
另一种方法是录制宏:
qa0f.s['<Esc>f,i']<Esc>jq
然后您可以在当前行上部署@a
并使用 重复@@
。或用于:%norm @a
在每一行上运行宏。
和上面基本一样,只不过不是:%norm
你qa
用来记录到a
寄存器里(你可以用任何字母)。然后执行编辑。j
在使用停止录制之前,我添加了一个下拉列表q
。
您可以在录制宏后通过粘贴寄存器 ( ) 的内容来编辑宏,编辑它们,然后在重播之前将"ap
它们拉回 ( )。"ay$
使用外部工具
如果我想用一个命令执行多个替换,我会通过像 sed 这样的外部程序过滤文本:
:%!sed "s/\./['/; s/,$/'],/"
还有一件好事
一个非常强大的工具是:g[lobal]
命令!(请参阅:help :g
)我经常将它与norm
命令结合使用。例如,如果我想将文档中的所有段落格式化得很好,但不影响缩进文本(可能是代码块或表格等),我会这样做:
:%g/^\w/norm gqap
这意味着,对于在行首带有字母的任何行,应用gqap
将正常模式命令gq
应用于“段落”的命令。
您可能还希望将第一个单词大写并增加所有降价标题的标题级别,如下所示:
:%g/^#/norm w~I#
这将改变这一点:
# a heading
some text.
## another heading
some more text
```sh
# and a comment in some code will be unaffected
print('hello world')
```
## a further heading
some text
# conclusion
进入这个:
## A heading
some text.
### Another heading
some more text
```sh
# and a comment in some code will be unaffected
print('hello world')
```
### A further heading
some text
## Conclusion
查看这些视频以了解“高级”vim 内容
推荐阅读
- powerbi - 如何根据 PowerBI 中的另一行对行求和?
- c++ - 如何连接 QT 和 MariaDB。未加载驱动程序
- regex - 正则表达式匹配除 0、1(11、12 等)以外的所有数字
- html - Angular Material Mat-菜单
- python - 使用无头时滚动的差异
- perl - perl拼接数组缺少条目
- elasticsearch - 无法通过带有 http://localhost:9200、9201、9203 的浏览器访问弹性搜索集群中 3 个节点中的 2 个(仅第一个)。这是正常的吗?为什么?
- python - 在 Jupyter Notebook 中键入 Markdown 和 LaTeX:2 错误
- python - 与单次读取并行将信息复制到少数数据库
- oracle-sqldeveloper - SQL Developer 代码完成仅当前架构