以与纯文本编辑器相同的方式缩进多行
Indent multiple lines the same way as plain text editor
有时我的 Word 文档中有代码块,我想在不复制到纯文本编辑器的情况下使用它们。
即,我希望能够使用 "Tab" 个字符 indent/unindent 多行代码。此任务在任何纯文本编辑器或 IDE 中都非常简单,但为了清楚起见,我将在此处显示。选项卡显示为黑色箭头:
- 初始状态
- 使用 Shift 键或鼠标,我 select编辑了 JavaScript 函数的一部分
- 然后我按了键盘上的 Tab 键
- 通过在每行中插入制表符缩进选定的行。
如何用 VBA 完成?
因为我没有 post 任何代码(作为我自己努力的证据),所以我不希望得到完全有效的东西。但至少,我希望得到理解 "how" 它可以做到。
按照大卫的建议,我录制了一个宏。外观如下:
Sub Indentator()
Selection.TypeText Text:=vbTab
End Sub
问题是,我不明白如何让它适用于多行。如果我 select 他们,这个宏(这对我来说并不奇怪)只是插入 "Tab" 而不是 selection.
在选择的每个段落的开头插入一个制表符:
Sub Indentator()
Dim para As Paragraph
For Each para In Selection.Paragraphs
para.Range.InsertBefore vbTab
Next
End Sub
(假设您的每个代码 "lines" 都是 Word 中的新 "paragraph",如果您打算 copy/paste 这个 to/from实际代码。)
如果宏被命名为 IncreaseIndent
和 DecreaseIndent
,它们可以 运行 使用主页选项卡上的增加和减少缩进按钮。
Sub IncreaseIndent()
If Selection.Start = Selection.End Then
Selection.InsertBefore vbTab
Selection.Start = Selection.End
Else
Dim p As Paragraph
For Each p In Selection.Paragraphs
p.Range.InsertBefore vbTab
Next
End If
End Sub
Sub DecreaseIndent()
If Selection.Start = Selection.Paragraphs(1).Range.Start Then
Selection.Start = Selection.Start + 1
End If
Dim p As Paragraph, c As Range
For Each p In Selection.Paragraphs
Set c = p.Range.Characters(1)
If c.Text = vbTab Then c.Delete
Next
End Sub
有时我的 Word 文档中有代码块,我想在不复制到纯文本编辑器的情况下使用它们。
即,我希望能够使用 "Tab" 个字符 indent/unindent 多行代码。此任务在任何纯文本编辑器或 IDE 中都非常简单,但为了清楚起见,我将在此处显示。选项卡显示为黑色箭头:
- 初始状态
- 使用 Shift 键或鼠标,我 select编辑了 JavaScript 函数的一部分
- 然后我按了键盘上的 Tab 键
- 通过在每行中插入制表符缩进选定的行。
如何用 VBA 完成?
因为我没有 post 任何代码(作为我自己努力的证据),所以我不希望得到完全有效的东西。但至少,我希望得到理解 "how" 它可以做到。
按照大卫的建议,我录制了一个宏。外观如下:
Sub Indentator()
Selection.TypeText Text:=vbTab
End Sub
问题是,我不明白如何让它适用于多行。如果我 select 他们,这个宏(这对我来说并不奇怪)只是插入 "Tab" 而不是 selection.
在选择的每个段落的开头插入一个制表符:
Sub Indentator()
Dim para As Paragraph
For Each para In Selection.Paragraphs
para.Range.InsertBefore vbTab
Next
End Sub
(假设您的每个代码 "lines" 都是 Word 中的新 "paragraph",如果您打算 copy/paste 这个 to/from实际代码。)
如果宏被命名为 IncreaseIndent
和 DecreaseIndent
,它们可以 运行 使用主页选项卡上的增加和减少缩进按钮。
Sub IncreaseIndent()
If Selection.Start = Selection.End Then
Selection.InsertBefore vbTab
Selection.Start = Selection.End
Else
Dim p As Paragraph
For Each p In Selection.Paragraphs
p.Range.InsertBefore vbTab
Next
End If
End Sub
Sub DecreaseIndent()
If Selection.Start = Selection.Paragraphs(1).Range.Start Then
Selection.Start = Selection.Start + 1
End If
Dim p As Paragraph, c As Range
For Each p In Selection.Paragraphs
Set c = p.Range.Characters(1)
If c.Text = vbTab Then c.Delete
Next
End Sub