前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TextMate:轻量级代码编辑器

TextMate:轻量级代码编辑器

作者头像
Y1ng
发布2022-10-31 11:22:50
2.4K0
发布2022-10-31 11:22:50
举报
文章被收录于专栏:颖奇L'Amore

Author: 颖奇L’Amore

Blog: www.gem-love.com


MacOS高效使用文章合集:here

需求分析

我基本上写代码分三种情况:

  1. 写个大项目,用框架之类的,会选择jetbrains公司的IDE,比如IDEA。但是太笨重
  2. 写脚本等,或者写简单的html页面(复杂的不会),一般是用vscode
  3. 对某些txt编辑一下,或者随手跑一个脚本,或者随便写两行代码,或者临时打开个编辑器记录几句话,这种时候vscode感觉还是过于笨重(尽管vscode已经非常轻量了),需要超级轻量的编辑器。

所以这篇文章主要分享一下我用的轻量级编辑器TextMate。以前一直用Sublime Text,用了三年多,也还可以,但是有时候有bug,于是终于在最近被我淘汰了。

TextMate

关于基本使用都默认就可以了,包括有一些转大小写等快捷键功能可以自行看一下说明。 这里主要介绍如何使用TextMate的Bundle功能,以python为例

代码模板

进入Edit Bundle

在这个红框Insert内相当于是代码模板(下面的idioms等也是),可以添加一些自己常用的代码模板,不过我一般也不用它写复杂的程序,这里就简单编辑一下头的模板

输入py3摁tab即可自动填充代码模板:

QQ20220419-225337-HD
QQ20220419-225337-HD

运行脚本

之前用sublime时直接打开一个脚本然后cmd+B就直接运行了,TextMate也可以一个快捷键直接运行

首先是Run Script,是在TextMate中运行脚本输出结果,但是我不能直接使用,提示python command not found 于是我手工修改了python的路径为我的python3的绝对路径:

cmd + R 即可运行

不过我不喜欢这个内置的输出,因为如果是长时间跑脚本的话,他的输出会有延迟,还是在iTerm中直接运行该py文件比较方便,这时候就要用Run Script(Terminal)。但是由于它是用AppleScript调用iTerm,而AppleScript使用了一种过时的表达tell the current terminal导致无法使用,需要修改,这是我修改后的版本:

代码语言:javascript
复制
<span class="hljs-meta">#!/bin/bash</span>
[[ -z <span class="hljs-string">"<span class="hljs-variable">$TM_FILEPATH</span>"</span> ]] &amp;&amp; TM_TMPFILE=$(mktemp -t pythonInTerm)
: <span class="hljs-string">"<span class="hljs-variable">${TM_FILEPATH:=$TM_TMPFILE}</span>"</span>; cat &gt;<span class="hljs-string">"<span class="hljs-variable">$TM_FILEPATH</span>"</span>

<span class="hljs-comment"># run script using either Terminal.app or iTerm.app</span>
<span class="hljs-comment"># if iTerm is open or if TM_TERMINAL is set to iTerm then use iTerm</span>
<span class="hljs-comment"># otherwise default to Terminal.app since that is standard.</span>
<span class="hljs-comment"># 这里将自带终端改成了iTerm</span>
TP=<span class="hljs-variable">${TM_TERMINAL:=iTerm}</span>
TPY=<span class="hljs-variable">${TM_PYTHON:-python}</span>

<span class="hljs-function"><span class="hljs-title">esc</span></span> () {
STR=<span class="hljs-string">"<span class="hljs-variable">$1</span>"</span> ruby18 &lt;&lt;<span class="hljs-string">"RUBY"</span>
   str = ENV[<span class="hljs-string">'STR'</span>]
   str = str.gsub(/<span class="hljs-string">'/, "'</span>\\\\<span class="hljs-string">''</span><span class="hljs-string">")</span>
<span class="hljs-string">   str = str.gsub(/[\\"</span>]/, <span class="hljs-string">'\\\\\\0'</span>)
   <span class="hljs-built_in">print</span> <span class="hljs-string">"'#{str}'"</span>
RUBY
}

<span class="hljs-function"><span class="hljs-title">iTerm_running</span></span> () {
    ruby &lt;&lt;<span class="hljs-string">"RUBY"</span>
        all = `ps -U <span class="hljs-string">"<span class="hljs-variable">$USER</span>"</span> -o ucomm`
        split = all.split(<span class="hljs-string">"\n"</span>)
        <span class="hljs-keyword">if</span> split.find { |cmd| <span class="hljs-string">'iTerm'</span> == cmd.strip }
            STDOUT.write 0
        <span class="hljs-keyword">else</span>
            STDOUT.write 1
        end
RUBY
}

<span class="hljs-comment"># 主要改了这个地方的AppleScript</span>
<span class="hljs-comment"># 然后删除临时文件由rm -rf改成了移至垃圾桶,避免误删文件导致文件丢失(一般不会生成临时文件所以用了个if做判断)</span>
<span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$TP</span>"</span> == iTerm ] || [ $(iTerm_running) == 0 ]; <span class="hljs-keyword">then</span>
    osascript &lt;&lt;<span class="hljs-string">END</span>
<span class="hljs-string">	tell application "iTerm"</span>
<span class="hljs-string">	    activate</span>
<span class="hljs-string">	    set newWindow to (create window with default profile)</span>
<span class="hljs-string">	    tell newWindow</span>
<span class="hljs-string">	        tell current session</span>
<span class="hljs-string">	            write text "clear; cd $(esc "${TM_DIRECTORY}"); /usr/bin/python3 $(esc "${TM_FILEPATH}"); if [ -f $(esc "${TM_TMPFILE}") ]; then mv $(esc "${TM_TMPFILE}") ~/.Trash; fi"</span>
<span class="hljs-string">	        end tell</span>
<span class="hljs-string">	    end tell</span>
<span class="hljs-string">	end tell</span>
<span class="hljs-string">END</span>
<span class="hljs-keyword">else</span>
    osascript &lt;&lt;- <span class="hljs-string">APPLESCRIPT</span>
<span class="hljs-string">    	tell app "Terminal"</span>
<span class="hljs-string">    	    launch</span>
<span class="hljs-string">    	    activate</span>
<span class="hljs-string">    	    do script "clear; cd $(esc "${TM_DIRECTORY}"); /usr/bin/python3 $(esc "${TM_FILEPATH}");if [ -f $(esc "${TM_TMPFILE}") ]; then mv $(esc "${TM_TMPFILE}") ~/.Trash; fi"</span>
<span class="hljs-string">    	    set position of first window to { 100, 100 }</span>
<span class="hljs-string">    	end tell</span>
<span class="hljs-string">APPLESCRIPT</span>
<span class="hljs-keyword">fi</span>
QQ20220419-230627-HD
QQ20220419-230627-HD
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求分析▸
  • TextMate▸
    • 代码模板▸
      • 运行脚本▸
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档