sublime text 创建小插件-读取文件内容写入光标位置

开始第一个python语言的sublime text插件

工作中使用php当开发语言,所以一直使用sublime text当开发工具,开启快速不卡顿谁人不爱,字符串都可以匹配一个字爽。如果熟悉一个项目压根就不要看目录树直接ctrl+k,ctrl+b隐藏目录树。在输入台(ctrl+shift+p)疯狂输出就可以了。大学都是学java出来工作都用php,现在java已忘光,啃老本的就剩面向对象概念。平常无聊也会看各种语法书但是因为都没有实践大多数都不精通。sublime text之前都是去找插件(https://packagecontrol.io/)来用,因为在window环境下会出现很多问题。去github下留言作者直接回有兴趣可以去优化功能,因为外国人基本上在linux做开发。所以就想着自己慢慢摸索写python插件也可以用到工作中来。

开始制作

首先要学会python其次去看sublime text提供的接口API。步骤Tool->Developer->NewPlugin创建一个python文件,生成在C:\Users\Administrator\AppData\Roaming\Sublime Text\Packages\User下,然后就生成了一个小插件每次开启sublime text它会自动被加载。
在这里插入图片描述

如何使用

ctrl+n创建一个新窗口页签,ctrl+~在输出面板上面输入view.run_command(‘example’)然后回车就可以看到Hello, World!(对未来的美好向往,几乎所有语言第一个程序)可以看出这个插件就是输出这么个东西的。
在这里插入图片描述

代码解析

此处代码是创建时自动生成的。两个import是引入sublime官方API的两个模块。类名ExampleCommand可以看出使用驼峰法书写规范,而其中我们使用view.run_command(‘example’)并没有带command所以写个输出命令后面是必须加Command,但如果我们是RunManCommand类名就需要使用view.run_command(‘run_man’)。最后一行代码因为继承了TextCommand所以本身有个view类实例就是选中的窗口位置为0插入文本"Hello, World!"

import sublime
import sublime_plugin


class ExampleCommand(sublime_plugin.TextCommand): # 继承TextCommand类:文本命令类
	def run(self, edit):
		self.view.insert(edit, 0, "Hello, World!") # 类本身有个view视图类

指定位置插入

首先在sublime text中被全中的区域是一个region实例,而sublime中是可以多选的,所以在view实例中有一个sel()方法,sel方法返回的是一个region列表,我们也可以for循环来输出,不过我这边只允许一个光标才能输出。

class ExampleCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		selections = self.view.sel()  # selection光标选择类返回一个region类列表
        if len(selections) == 1 and selections[0].begin() == selections[0].end():
            self.view.insert(edit, selections[0].begin(), "Hello, World!")

读取带换行格式的较大的代码片段

首先我们为了方便把公共方法read_file放在了一起,最好是通过import引入,这个就是我们输出一个文件的内容带换行和空格。

import sublime
import sublime_plugin

def read_file(name):  # 读取文件内容
    f = open('D:\\program\\test\\' + name, 'r')
    snippet = f.read()
    f.close()
    return snippet

class ExampleCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		selections = self.view.sel()  # selection光标选择类返回一个region类列表
        if len(selections) == 1 and selections[0].begin() == selections[0].end():
            self.view.insert(edit, selections[0].begin(), read_file('index.html'))

传参输出文本

上面的Example太过局限,一个类只能处一个文件。所以我们需要传参,那么我们的run_command()方法第二位是个通用参数默认是空,是一个字典。
在这里插入图片描述
在这里插入图片描述

最终代码

那我们的调用方式就是view.run_command(‘example’, {name:‘index.html’})

import sublime
import sublime_plugin

def read_file(name):  # 读取文件内容
    f = open('D:\\program\\test\\' + name, 'r')
    snippet = f.read()
    f.close()
    return snippet

class ExampleCommand(sublime_plugin.TextCommand):
	def run(self, edit, name):
		selections = self.view.sel()  # selection光标选择类返回一个region类列表
        if len(selections) == 1 and selections[0].begin() == selections[0].end():
            self.view.insert(edit, selections[0].begin(), read_file(name))

绑定快捷键

不可能每次都用打命令而且这么长view.run_command(‘example’, {name:‘index.html’}),绑定快捷键操作如下步骤。
在这里插入图片描述

[
	{ 
		"keys": ["f12"], 
		"command": "example", 
		"args" : { "name": "index.html"}
	}
]

最近开始对python感兴趣所以会持续的。写一些简单的插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值