![TeXShop:强制使用空格代替制表符](https://linux22.com/image/249463/TeXShop%EF%BC%9A%E5%BC%BA%E5%88%B6%E4%BD%BF%E7%94%A8%E7%A9%BA%E6%A0%BC%E4%BB%A3%E6%9B%BF%E5%88%B6%E8%A1%A8%E7%AC%A6.png)
有没有办法让 TeXShop 在按下 Tab 键时插入任意数量的空格而不是插入一个 Tab?TeXnicle 中有这个功能,我非常喜欢它,但 TeXShop 是我最喜欢的编辑器。
一个相关的问题是如何在 TeXShop 中轻松地使用空格(而不是制表符)缩进多行代码。当我想到它时,我甚至不知道如何使用制表符缩进多行代码!
TeXnicle中的设置如下图所示:
更新
我编写了一些代码,可以在 TeXShop 中任意数量的选定行前面添加一个空格(或更多)。不过,我需要一些帮助。运行脚本后,TeXShop 取消选择原始选择。这有什么不好吗?您无法在同一选择上快速重新运行脚本。为该脚本设置键绑定效率不高。
(*BASIC STRUCTURE OF THIS SCRIPT*)
--repeat with each line in theselection
--do shell script "sed 's/^/ /' --THIS THING JUST ADDS A SPACE IN FRONT OF EACH LINE OF INPUT
tell application "TeXShop"
--get the front document
set thisDoc to the front document
set mySel to selection of thisDoc
set selContent to content of selection of thisDoc
set outcome to do shell script "echo " & (quoted form of selContent) & "|sed 's/^/ /' "
set content of selection of thisDoc to outcome
end tell
前:
后:
有没有办法修复这个脚本,以便它在运行后保持选择状态?
答案1
这是一个脚本,它在每个选定的行前插入一个空格,并保持选定的行。
它的工作原理是保存选择的位置,在每一行添加一个空格,然后重新选择原始选择。
tell application "TeXShop"
--get the front document
set thisDoc to the front document
--get the current selection text, offset, and length
set selContent to content of selection of thisDoc
set selOffset to offset of selection of thisDoc
set selLength to length of selection of thisDoc
end tell
set outcome to ""
set spaceAdded to 0
-- add a space to each line, except for blank lines
repeat with oneLine in (paragraphs of selContent)
if length of oneLine is equal to 0 then
set outcome to outcome & return
else
set outcome to outcome & " " & oneLine & return
set spaceAdded to spaceAdded + 1
end if
end repeat
tell application "TeXShop"
try
-- this will avoid the error caused if there is no text selected
set content of selection of thisDoc to (text 1 thru -2 of outcome)
set offset of selection of thisDoc to selOffset
set length of selection of thisDoc to selLength + spaceAdded
end try
end tell
答案2
你谈论的通常被称为软标签,我也想在 TeXShop 中找到它们。但到目前为止我还没有找到它们。
缩进/取消缩进操作位于 TeXShop 菜单栏中的“源”菜单下。 它们插入硬制表符。它们插入软制表符(我不确定何时进行此更改)。默认情况下,它们没有任何键绑定到它们,但您可以使用系统偏好设置来创建一些键,如下所示这篇 Lifehacker 文章。
我曾考虑创建一个 TeXShop 宏来插入软制表符,并将其绑定到 Tab 键,但这比听起来更成问题。Tab 键用于导航任何对话框。也许出于这个原因,无法使用 TeXShop 的宏编辑器编辑器(或“键盘”系统偏好设置面板)绑定 Tab 键。
您真正需要做的是在文档的编辑窗口中重新绑定 Tab 键。我不知道该怎么做。