如何在MacOS上启动Vim并在启动时打开特定文件夹?


0

从TextMate切换到Vim,我想启动Vim并在MacOS上启动时打开特定的文件夹吗?

我可以手动从shell启动Vim mvim someFolder。我使用MacOS 10.6和NERDTree。

谢谢!

编辑

阅读并尝试应用建议的答案(顺便说一句),我意识到我可能对自己的问题不够清楚:

我希望MacVim在启动时自动启动,并打开我的特定文件夹。稍后,在MacOS会话期间,如果出于任何原因打开新的MacVim,但我不希望它打开此特定文件夹,则需要MacVim默认行为。

我可以使用TextMate做到这一点,方法是转到MacOS系统首选项,帐户,登录项,然后在此处添加我的TextMate项目文件。由于此项目文件与TextMate关联,因此足以在启动时自动启动TextMate并显示此项目文件列表。

有没有办法用Vim实现这一目标?


你读了我的最后评论吗?我认为这是实现目标的最简单方法。在您的shell脚本中尝试一下:cd /path/to/folder/ && mvim +NERDTree .它确实可以满足您的需求。您可以将其与@Jack M的答案结合使用,以获得更自定义的工作空间。
romainl 2011年

@romainl对不起,我错过了您的评论。我刚刚评论了您的问题,确实您的解决方案是最简单的,谢谢!
Florent2 2011年

Answers:


2

如果你想的MacVim到每次打开文件夹,你可能别名以及添加到您的.profile.bashrc像这样:

alias vimm='mvim /path/to/some/folder'

这样,您仍然可以.profile使用常规mvim命令启动MacVim来执行与文件夹内容无关的某些任务(例如编辑您的配置文件或某些配置文件)。


谢谢,这对我来说听起来不错,但是如何vimm在MacOs启动时执行它呢?
Florent2 2011年

@ Florent2您可以使用常规的shebang加此行来创建Shell脚本:mvim /path/to/some/folder或者简单地(vimm如果您已创建别名),使其成为可执行文件并将其添加到“系统偏好设置”的“帐户”窗格下的启动项列表中。或使用launchd或可能的十几种解决方案中的任何一种。
romainl 2011年

谢谢!我让您的解决方案正常工作,这对我来说是最简单的(只需将Shell脚本的扩展名从.sh更改为.command,否则该Shell脚本将在我的默认编辑器中打开,而不是在MacOS启动期间运行)
Florent2 2011年

1

要将NERDTree打开到特定目录,可以将以下行添加到您的目录中~/.gvimrc(或者~/.vimrc如果您也希望它在控制台中工作):

au VimEnter * NERDTreeToggle /path/to/your/folder/

谢谢,但是当我添加NERDTreeToggle /path/to/my/folder/到〜/ .vimrc然后运行时mvim,出现错误Not an editor command: NERDTreeToggle /path/to/my/folder。我是vim的新手,所以我可能错过了一些明显的东西吗?
2011年

1
vimrc是在任何插件之前提供的,因此该命令不可用。我已经编辑了答案,以使用将在Vim启动完成时运行的autocmd。
莱蒙迪

@ElIsra感谢它的工作,但我只希望MacOs启动时有这种行为。我已经对问题进行了编辑,以使其更加清晰。
Florent2 2011年

1

要在启动时进行启动,您必须跳过一些麻烦。

使用.vims扩展名创建会话文件:

打开MacVim并打开您要打开的任何/所有文件/选项卡/ NERDTrees。将此保存到带有.vims扩展名的会话中:

mksession! ~/Desktop/project.vims

它可以放在您想要的任何目录中,我只是在使用桌面以便于使用。

创建一个Automator应用程序:

打开Automator并创建一个新的Custom应用程序。向您的工作流添加“运行Shell脚本”操作。将Shell更改为/usr/bin/ruby,并将“传递输入”更改为“作为参数”,然后将此代码粘贴到操作主体中:

file_name = ARGV[0].split(' ').join('\ ')
command = %Q!/usr/local/bin/mvim -S "#{file_name}"!
system(command)

检查的地点mvimwhich,并在必要时更新。保存工作流程(将其放入中~/Desktop/SU),然后将“文件格式”更改为“应用程序”。

将您的Automator应用程序与.vims文件相关联。

右键单击~/Desktop/project.vims并选择“获取信息”。在“打开方式:”下,选择您的Automator应用程序,并将其告知“更改所有...”。

放入您的登录项。

打开“系统偏好设置”,“帐户”,“您的用户”,然后选择“登录项目”选项卡。将~/Desktop/project.vims文件拖到列表中。

完成!

注销并重新登录,MacVim应该会自动打开。

限制。

由于某些原因,如果VIM处于活动状态,则Automator会在此会话期间保持运行。如果有人知道如何解决此问题,请告诉我。


感谢您的详细回答!最后,我使用Romainl的解决方案,对我来说是最简单的。
Florent2 2011年

1

您可以创建一个applescript以运行shell命令并将其添加到启动项中

-- Open MacVim
do shell script "/path/to/mvim /path/to/folder"

要么

    -- Open Vim on the terminal
    tell application "Terminal"
        activate
        do script "/path/to/vim /path/to/folder"
    end tell

使用AppleScript编辑器。


谢谢,最后我使用了Romainl的解决方案,对我来说是最简单的。我尝试了您的尝试,但是applescript不会在启动时运行,只能在applescript编辑器中打开。我想还需要设置一些其他内容(例如,对于我必须将扩展名从.sh更改为.command的shell脚本)。
Florent2 2011年

您可以在“另存为...”对话框中找到一些选择。
Raimondi

0

我发现最有用的是使用NERDTree在选项卡中打开项目文件,然后创建会话文件:

mksession! project.vim

如果将新文件添加到项目中,则感叹号将覆盖之前的项目。然后,无论何时我想启动vim,我都只需要调用:

vim -S project.vim

我想您可以直接在vimrc中获取project.vim,以获得更自动化的方法。


谢谢,我可以创建project.vim文件,但运行mvim -S project.vimNERDTree面板时为空。
2011年

@ Florent2。我会添加:将autochdir设置为生成的vim文件的末尾或vimrc。这样,当您找到文件源时,它将直接进入您正在编辑的缓冲区的目录,从而填充了nerdtree。
celebdor

谢谢,不幸的是无法使其与添加set autochdirvimrc文件一起工作,并且无法将其添加到生成的vim文件中,因为我想在每次覆盖它时都要重做一次。
Florent2 2011年

@ Florent2你是对的,我不知道autochdir弄乱了会话。因此,也许您可​​以像这样映射一些击键以切换到当前缓冲区的目录(在vim.wikia.com/wiki/VimTip64中提出):map,cd:cd%:p:h <CR>:pwd <CR>
celebdor 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.