操作XCode中的文本,移动一行

操作XCode中的文本,移动一行,xcode,metaprogramming,Xcode,Metaprogramming,在emacs中,我有各种各样的函数来操作文本。现在我正在使用xcode,我想我可以让emacs成为默认编辑器,但我想浏览obj-c对象等等,所以我宁愿只实现我最常用的xcode文本操作命令 首先,在我的列表中,我想要一个命令,将当前行的文本上下移动一行,使光标保持在当前行上 在emacs中,这是: (defun move-one-line-downward () "Move current line downward once." (interactive) (forward-lin

在emacs中,我有各种各样的函数来操作文本。现在我正在使用xcode,我想我可以让emacs成为默认编辑器,但我想浏览obj-c对象等等,所以我宁愿只实现我最常用的xcode文本操作命令

首先,在我的列表中,我想要一个命令,将当前行的文本上下移动一行,使光标保持在当前行上

在emacs中,这是:

(defun move-one-line-downward ()
  "Move current line downward once."
  (interactive)
  (forward-line)
  (transpose-lines 1)
  (forward-line -1))
如果我能用Python编写一个脚本,在XCode中也能做到同样的效果,我会非常高兴,但据我所知,我需要和AppleScript谈谈才能做到这一点


有人能告诉我如何使用XCode做到这一点吗?

我认为你的问题比XCode/emacs更一般。大多数IDE不能做编辑可以做的事情,反之亦然

我要做的是使用Xcode来处理“简单”的东西并进行编译/调试。当我想做大量的编码(hm…文本编辑)时,我会在一个Vim中打开多个文件(对emacs没有冒犯……Vim是我选择的编辑器),并使用所有可用的Vim技巧

当我需要在Windows(visualstudio)上进行大量编码时,我也遵循同样的过程。我打开VS只是为了编译/调试,但我在单独的Vim窗口中进行大多数编码

我不需要在Unix上执行任何操作,因为我只需在Vim中打开文件,然后从Vim中运行Makefile,直接跳转到错误,等等(:mak)


我确信有一些非常聪明的方法可以让Xcode做一些已经在Vim和Vim中的事情,来做Xcode可以做的事情,但我专注于编码,所以没有太多的时间来处理这些事情。

你想要做的事情可以通过Xcode的“用户脚本”来实现-它附带了一对脚本,几乎可以实现您想要的功能。(我在这里使用的是Xcode 3.2,但我认为它们也在3.1中)

查看
/Developer/Library/Xcode/User Scripts/
;这里有两个应用程序说明,
上移行.scpt
下移行.scpt
。下面是
向上移动队列中的内容:

(*
To edit this script, choose Save As... and save it in your home directory, then re-add it to the User Scripts list.
*)
using terms from application "Xcode"
    tell first text document
        set {startLine, endLine} to selected paragraph range

        if startLine > 1 then
            set theText to (paragraphs startLine through endLine)
            set theText to (theText as string)
            delete (paragraphs startLine through endLine)
            make new paragraph at beginning of paragraph (startLine - 1) with data theText
            set selected paragraph range to {startLine - 1, endLine - 1}
        else
            beep 1
        end if
    end tell
end using terms from
这些几乎做你想要的,除了他们选择整个线之后;我不是applescript专家,但您可能希望存储
选定的字符范围
。查看Xcode脚本字典(在AppleScript编辑器中,文件->打开字典->Xcode),找出可以操作的对象类型

您可以使用脚本菜单中的“编辑用户脚本”菜单项将自己的脚本添加到Xcode;并通过双击“脚本”菜单项条目旁边的右侧列,为该窗口中的脚本指定快捷键

您也可以在用户脚本菜单中使用shell脚本(perl、python、bash等等),但这些脚本只处理选择或整个文件,因此可能会有点重,无法上下移动一行

请参阅此处有关用户脚本的所有文档:


我希望这有帮助

另外,您可以将emacs(或者vi,或者bbedit,或者ed,我想)连接到xcode,这样它们就可以相互通信了。当您告诉xcode打开一个文件时,它将调用EmacClient等。您甚至可以让emacs告诉xcode在哪里放置断点(我不记得怎么做了,但我刚才在这里问了一个问题,效果很好)

Xcode 4有一组新的命令,用于移动光标所在的行或使用
命令
+
选项
+
[
]

⌥⌘[
⌥⌘]


您可以使用python来编写Applescript—请参阅appscript,这是首选的工作方式,但这不是问题所在。但是非常复杂。cescofry有答案。