如何在Vim中将换行分隔的列表(如函数参数)合并到同一行
Vim合并多行参数列表的原生快捷键方案
以下操作均为Vim原生支持,无需额外安装插件或配置宏,适配所有带括号的语法场景,不局限于Python。
方法1:精准删除左括号到首个参数间的所有空白(完全匹配需求)
操作步骤:
- 将光标移动到函数定义的左括号
(上,按l右移1位到括号后的第一个空白字符处 - 按下
d/\S<CR>即可直接删除从当前位置到第一个非空白字符(即首个参数的首字母)之间的所有换行、空格、制表符
全程仅需3次按键,一步完成操作。
方法2:一键合并所有参数到同一行
如果需要把整个括号内的多行参数全部合并为单行,可通过文本对象+替换命令快速完成:
- 将光标放在括号内部的任意位置(
arg1、arg2所在行均可) - 按下
vi(选中括号内的所有内容 - 直接输入
:s/\s*\n\s*/ /g<CR>执行替换,所有换行和前后的缩进都会被替换为单个空格,直接得到arg1, arg2的规范格式
全程不需要切换插入模式,效率远高于逐行删除。
方法3:用常用合并行快捷键操作
如果不想记正则搜索的写法,用Vim默认的合并行快捷键也能快速完成:
- 把光标放在
def foo(所在行的任意位置,按大写J,会自动把下一行合并到当前行末尾,换行替换为单个空格,此时只需删掉括号和参数之间多余的空格即可 - 如果要合并后续的参数行,重复按
J即可,还可以搭配计数前缀,比如需要合并2行参数的话,直接按2J就能一次合并2行,再调整多余空格即可。
内容的提问来源于stack exchange,提问作者quant
相关产品推荐
相关产品推荐

