我在网上看到很多类似以下的代码:
public static void read()
{
using (StreamReader m_StreamReader = new StreamReader("C:\\myCsv.Csv"))
{
while (m_StreamReader.Peek >= 0)
{
string m_Str = m_StreamReader.ReadLine;
string[] m_Splitted = m_Str.Split(new char[] { "," });
Console.WriteLine(string.Format("{0}={1}", m_Splitted[0], m_Splitted[1]));
}
}
}
但是,我想将上述内容转换为以下内容:
public static void read() {
using (StreamReader m_StreamReader = new StreamReader("C:\\myCsv.Csv")) {
while (m_StreamReader.Peek >= 0) {
string m_Str = m_StreamReader.ReadLine;
string[] m_Splitted = m_Str.Split(new char[] { "," });
Console.WriteLine(string.Format("{0}={1}", m_Splitted[0], m_Splitted[1]));
}
}
}
因此,起始花括号被带到上一行的末尾。如何在Vim中通过编程实现这一点?它尝试了,但尽管我可以拿起起始花括号,但无法设法将其带到上一行的末尾。
注:以上代码来自here。
2条答案
按热度按时间vptzau2j1#
将下一行加入到当前行是在正常模式下使用
:help J
或在命令行模式下使用:help :join
完成的。将当前行与上一行合并是在普通模式下通过将光标移动到带有
-
的上一行,然后使用J
合并来完成的。在命令行模式下,您可以使用-
(.-1
的缩写,“当前行号减一”)作为:h address
来表示:join
::-j
,其非常好地反映了简正模式方法。要在整个缓冲区上执行此操作,需要一种方法来在每个隔离的左大括号上执行给定的命令。
明细:
:g/<pattern>/<command>
在与<pattern>
匹配的每一行上执行<command>
,^\s*{\s*$
匹配具有单个左大括号和可选前导空格和尾随空格的行,-j
将当前行与上面的行连接起来。但是结果不再正确缩进,因此您需要类似以下命令的命令来修复混乱:
明细:
gg
将光标移动到第1行,=G
重新缩进从光标到最后一行的每一行,请参见:help =
。也就是说,从一种编码风格切换到另一种风格似乎应该使用专用工具来完成,而不是使用一般的文本编辑。
bnl4lu3b2#
所需的输出看起来与ratliff样式惊人地相似。如果这是正确的,
astyle
是一个支持这种特定样式的格式化程序,这种解决方案将比手动更改更健壮。您可以将其包含在您自己的命令中,如下所示: