如何使用.NET开发全app开发最低版本支持持的Outlook插件产品

outlook插件开发问题
[问题点数:20分,结帖人zero_226]
outlook插件开发问题
[问题点数:20分,结帖人zero_226]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年9月 其他开发语言大版内专家分月排行榜第二2012年3月 其他开发语言大版内专家分月排行榜第二2010年5月 其他开发语言大版内专家分月排行榜第二
2013年5月 其他开发语言大版内专家分月排行榜第三
2014年9月 其他开发语言大版内专家分月排行榜第二2012年3月 其他开发语言大版内专家分月排行榜第二2010年5月 其他开发语言大版内专家分月排行榜第二
2013年5月 其他开发语言大版内专家分月排行榜第三
2014年9月 其他开发语言大版内专家分月排行榜第二2012年3月 其他开发语言大版内专家分月排行榜第二2010年5月 其他开发语言大版内专家分月排行榜第二
2013年5月 其他开发语言大版内专家分月排行榜第三
2014年9月 其他开发语言大版内专家分月排行榜第二2012年3月 其他开发语言大版内专家分月排行榜第二2010年5月 其他开发语言大版内专家分月排行榜第二
2013年5月 其他开发语言大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。11182人阅读
Outlook 插件开发小结
  最近实习在做outlook插件开发,阅读了一些VSTO的相关概念和知识。遂将整理所得与大家分享和交流。PS:这篇博客为本人的第一篇正式技术博客,如有错误和不妥之处请读者见谅。
 I.基本介绍
  1.VSTO外接程序体系结构
&&&&&&&&&&&&&
  2.Outlook add-in注册表项
&   1.Microsoft Office 2010 应用程序可加载在 HKEY_LOCAL_MACHINE 或 HKEY_CURRENT_USER 下注册的外接程序。默认情况下,2007 Microsoft Office system 中的应用程序只能加载在 HKEY_CURRENT_USER 下注册的外接程序。
&   2.外接程序注册表项位于所有应用程序(Visio 除外,它的 根 为 HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)的以下注册表项之下:Root\Software\Microsoft\Office\应用程序名称\Addins\外接程序ID(外接程序ID一般为项目名)
&   3.Outlook 窗体区域的注册表项:Root\Software\Microsoft\Office\Outlook\FormRegions\消息类
  3.安装部署
&   1. ClickOnce 部署:仅当前用户可以注册外接程序。这是因为 ClickOnce 只支持在 HKEY_CURRENT_USER 下创建密钥。
&   2. Windows Installer部署:无限制
  4.定制项
&  UI方面
&  1.自定义UI
&  2.窗体区域/ribbon:与outlook界面相整合
&  逻辑方面
&  1.与outlook PIA或其他office PIA进行交互
&  2.自定义属性:用于用户自定义数据和扩展功能
  5.outlook对象模型
&  Application 对象
&  Application 对象表示 Outlook 应用程序,它是 Outlook 对象模型中最高级的对象。
&  Explorer 对象
&  Explorer 对象表示显示包含项(如电子邮件、任务或约会)的文件夹内容的窗口。Explorer 对象包括可用来修改窗口的方法和属性,以及窗口更改时所引发的事件。
&  Inspector 对象
&  Inspector 对象表示显示单个项(如电子邮件、任务或约会)的窗口。Inspector 对象包括可用来修改窗口的方法和属性,以及窗口更改时所引发的事件。
&  MAPIFolder 对象
&  MAPIFolder 对象表示包含电子邮件、联系人、任务及其他项的文件夹。Outlook 提供 16 个默认 MAPIFolder 对象。
&  MailItem、AppointmentItem、TaskItem、ContactItem分别对应邮件项、约会项、任务项、联系人项
  6.卸载
&   1.手动删除(控制面板\程序\卸载程序)
&&  2.删除注册表(其实并未完整卸载,只是outlook不能检测到。控制面板\程序中仍有该插件信息)
&&  3.禁用插件(推荐:使outlook将插件禁用,但保留在加载项栏中。想重用时可以手动启用。)
&   后两项都能用代码完成。
 II.实例讲解
  以下demo在VS 2010下完成。
  1.VS 为office拓展程序开发提供了很好的开发项。创建OutlookAddIn:File-&New-&Project-&Visual C#-&Office-&)-&Outlook 2010 Add-in.
  2.命名好工程名确认后,系统会自动生成ThisAddIn类以及一些相应的事件。而ThisAddIn类就是整个拓展程序的一个抽象表示。
  3.现在,我们可以添加自己的定制项。这里我首先添加一个窗体区域(FormRegion),窗体区域的特点是可以将该区域嵌入到outlook的工作区。右击工程名-&Add-&New Item-&Outlook Form Region.点击确认后会进入FormRegion的导航设置  框。分别有一下几项:
    一.创建方式:创建新窗体区域/从已有窗体区域导入(这里选择前者)
    二.窗体样式:按窗体位置和区域分有四种样式(这里选择第二项:adjoining加在工作窗体的底部)
    三.添加描述和呈现喜好(这里选择默认)
    四.选择呈现该窗体区域的消息类。由于我们是要做一个简单的联系人的拓展程序(下面会介绍),所以我们呈现该窗体区域的消息类选择Contact。
  设置完成点击Finish窗体区域就会成功添加。这时会出现一个自定义控件,我们可以设置里面的控件和样式。
  现在介绍一下我们的拓展程序。这里我们是做一个跟联系人有关的拓展程序:为联系人添加附加属性。我们知道联系人默认的属性是有限的,为了方便用户自定义属性,Outlook为我们设置了UserProperties方便用户设置各种自定义属性。这里我们就要  用它设置我们的定制项。这里我们帮联系人添加父母及其生日的附加属性。为简单起见我们需要两个textBox和两个DataTimePicker。布局完成如下:
  4.接下来,我们需要处理拓展程序的逻辑部分。主要思路是定义自定义属性、绑定属性、属性变更处理。主要代码及注释如下:
// 自定义的属性名字
private const string PROPERTY_NAME_MOTHER_NAME = &PROPERTY NAME MOTHER NAME&;
private const string PROPERTY_NAME_MOTHER_BIRTHDAY = &PROPERTY NAME MOTHER BIRTHDAY&;
private const string PROPERTY_NAME_FATHER_NAME = &PROPERTY NAME FATHER NAME&;
private const string PROPERTY_NAME_FATHER_BIRTHDAY = &PROPERTY NAME FATHER BIRTHDAY&;
// 自定义属性对象
private Outlook.UserProperty _MotherNameProperty = null;
private Outlook.UserProperty _MotherBirthdayProperty = null; 10
private Outlook.UserProperty _FatherNameProperty = null; 11
private Outlook.UserProperty _FatherBirthdayProperty = null; 12
// 对应的Contact对象 14
public Outlook.ContactItem _Contact = null; 15
// 标记是否内容修改 17
private bool _Changed = false; 18
// Occurs before the form region is displayed. 20
// Use this.OutlookItem to get a reference to the current Outlook item. 21
// Use this.OutlookFormRegion to get a reference to the form region. 22
private void FormRegion1_FormRegionShowing(object sender, System.EventArgs e) 23
// 获得FormRegion所对应的Contact对象 25
_Contact = ((Microsoft.Office.Tools.Outlook.FormRegionControl)sender).OutlookItem as Outlook.ContactI 26
//_Contact = Globals.ThisAddIn.Application.ActiveInspector().CurrentI 27
// 从联系人的自定义属性中,获得母亲姓名属性 29
_MotherNameProperty = _Contact.UserProperties.Find(PROPERTY_NAME_MOTHER_NAME, Type.Missing); 30
if (_MotherNameProperty != null) 31
// 如果存在这个属性,则取出Value为控件赋值 33
tbMotherName.Text = _MotherNameProperty.Value as S 34
// 不存在则创建这个属性 38
_MotherNameProperty = _Contact.UserProperties.Add(PROPERTY_NAME_MOTHER_NAME, Outlook.OlUserPropertyType.olText, Type.Missing, Type.Missing); 39
// 母亲生日,原理相同 42
_MotherBirthdayProperty = _Contact.UserProperties.Find(PROPERTY_NAME_MOTHER_BIRTHDAY, Type.Missing); 43
if (_MotherBirthdayProperty != null) 44
dtpMotherBirthday.Value = (DateTime)_MotherBirthdayProperty.V 46
_MotherBirthdayProperty = _Contact.UserProperties.Add(PROPERTY_NAME_MOTHER_BIRTHDAY, Outlook.OlUserPropertyType.olDateTime, Type.Missing, Type.Missing); 50
// 父亲姓名 53
_FatherNameProperty = _Contact.UserProperties.Find(PROPERTY_NAME_FATHER_NAME, Type.Missing); 54
if (_FatherNameProperty != null) 55
tbFatherName.Text = _FatherNameProperty.Value as S 57
_FatherNameProperty = _Contact.UserProperties.Add(PROPERTY_NAME_FATHER_NAME, Outlook.OlUserPropertyType.olText, Type.Missing, Type.Missing); 61
// 父亲生日 64
_FatherBirthdayProperty = _Contact.UserProperties.Find(PROPERTY_NAME_FATHER_BIRTHDAY, Type.Missing); 65
if (_FatherBirthdayProperty != null) 66
dtpFatherBirthday.Value = (DateTime)_FatherBirthdayProperty.V 68
_FatherBirthdayProperty = _Contact.UserProperties.Add(PROPERTY_NAME_FATHER_BIRTHDAY, Outlook.OlUserPropertyType.olDateTime, Type.Missing, Type.Missing); 72
// 将这四个控件绑定change事件,只有在修改之后,我们才会将值回写到Contact对应的属性中去 75
tbMotherName.TextChanged += new EventHandler(content_Changed); 76
dtpMotherBirthday.ValueChanged += new EventHandler(content_Changed); 77
tbFatherName.TextChanged += new EventHandler(content_Changed); 78
dtpFatherBirthday.ValueChanged += new EventHandler(content_Changed); 79
// 在Write事件中,把修改的值保存到属性中去 81
_Contact.Write += new Microsoft.Office.Interop.Outlook.ItemEvents_10_WriteEventHandler(contact_Write); 82
void content_Changed(object sender, EventArgs e) 85
// 有修改时,将_Change置为true 87
_Changed = true; 88
void contact_Write(ref bool Cancel) 91
if (_Changed) 93
// 保存值到属性中去 95
_MotherNameProperty.Value = tbMotherName.Text.Trim(); 96
_MotherBirthdayProperty.Value = dtpMotherBirthday.V 97
_FatherNameProperty.Value = tbFatherName.Text.Trim(); 98
_FatherBirthdayProperty.Value = dtpFatherBirthday.V 99
// Occurs when the form region is closed.104
// Use this.OutlookItem to get a reference to the current Outlook item.105
// Use this.OutlookFormRegion to get a reference to the form region.106
private void FormRegion1_FormRegionClosed(object sender, System.EventArgs e)107
// 关闭事件绑定109
_Contact.Write -= new Microsoft.Office.Interop.Outlook.ItemEvents_10_WriteEventHandler(contact_Write);110 111
// 释放对象112
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Contact);113
_Contact = null;114
  现在,拓展程序已经可以调试了。运行后outlook程序会自动启动并加载此拓展项。打开联系人信息工作区会看到刚才的窗体区域被成功地加了进去。
  好了。我们联系人的自定义属性已经做好了。为了实例的完整性,现在我们再加一个ribbon控件,使其附加在本地outlook的ribbon菜单项内。其功能为:一.显示联系人信息(主要是我们刚才添加的附加属性信息);二.拓展程序卸载/禁用。
  5添加ribbon:右击工程名-&Add-&New Item-&Ribbon (Visual Designer).点击确认后会看到一个ribbon控件被添加了进来。值得注意的是RibbonType属性,它决定着ribbon的显示位置默认为Mail.Read。由于我们要将该ribbon显示在主窗体的  ribbon项集中,因此其RibbonType应勾选Explore(同理如何想让该ribbon显示在联系人窗体的ribbon项中可勾选Contact)。现在我们要为其添加两个RibbonButton:分别为Show
Contacts Info和Unistall。
  6.针对Show Contacts Info为了显示联系人信息,我们需要添加一个窗体来进行显示。于是我们可以添加一个UserControl名为ContactsInfoDisplay,其形式如下:
  为了显示联系人信息,我们可以传入一个ContactItem作为其构造函数的参数。然后获取其对象中的相关属性。代码如下: 
1 public ContactsInfoDisplay(Microsoft.Office.Interop.Outlook.ContactItem contact) 2
InitializeComponent(); 4
this.name.Text = contact.LastName+& &+contact.FirstN 5
this.phone.Text = contact.MobileTelephoneN 6
this.email.Text = contact.Email1A 7
//获取自定义属性 8
this.father.Text = string.Format(&{0}({1})&, contact.UserProperties.Find(&PROPERTY NAME FATHER NAME&).Value, contact.UserProperties.Find(&PROPERTY NAME FATHER BIRTHDAY&).Value); 9
this.mother.Text = string.Format(&{0}({1})&, contact.UserProperties.Find(&PROPERTY NAME MOTHER NAME&).Value, contact.UserProperties.Find(&PROPERTY NAME MOTHER BIRTHDAY&).Value);10
  7.针对Unistall,我们有两种策略(第一部分提到)。
&&&&&&&& 一:删除注册表:第一部分提到过outlook加载插件时先检查注册表里的特定目录下的项。如果删除该项,outlook就不会检测到从而也就不会加载。代码如下:
1 RegistryKey regKey = null; 2
RegistryKey regSubKey = null; 3
//Read the key
regKey = Microsoft.Win32.Registry.CurrentU 7
//获取outlook插件目录下的子键 8
regSubKey = regKey.OpenSubKey(string.Format(@&Software\Microsoft\Office\Outlook\Addins&), true); 9
//获取当前插件名10
regSubKey.DeleteSubKey(Assembly.GetExecutingAssembly().GetName().Name);11
System.Windows.Forms.MessageBox.Show(&插件卸载成功,下次启动生效!&);12
catch (Exception e)14
System.Windows.Forms.MessageBox.Show(e.Message);16
   二:禁用插件:由于第一种方法只是处理注册表,因此卸载的不是很彻底。还有很多遗留项。因此推荐使用第二种方法。使outlook将插件禁用,但保留在加载项栏中。想重用时可以手动启用。其相应的代码也很简单。
Microsoft.AddIn addin= Globals.AddIns.Item(&OutlookAddInDemo&);2
addin.Connect = false;
  到现在我们的实例已经完整的介绍完了,运行结果如图。完整工程源代码下载:。
来自:-插件开发小结/
QQ 交流群:6休
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:426258次
积分:4652
积分:4652
排名:第4516名
原创:26篇
转载:185篇
评论:16条
(1)(2)(1)(1)(1)(1)(1)(1)(6)(1)(1)(2)(2)(4)(5)(7)(5)(6)(3)(9)(8)(3)(1)(7)(1)(20)(14)(27)(4)(12)(2)(2)(6)(10)(12)(11)(2)(4)(1)(2)(1)(1)Sublime Text 3能用支持的插件推荐 - 博客频道 - CSDN.NET
kevin_xiang的专栏,mail:
分类:乱七八糟JavaWeb
http://dengo.org/archives/923
从二月份用测试版本build 3012开始用sublime text 3,虽然很多插件在sublime text 3不工作了,因为sublime text 3修复了2的一些bug、提升了性能并集成了不少常用插件的功能,当时没什么要求够用了,就这样傻傻地裸插件空手写代码用了快5个月。上月27号Sublime Text 3公测了,又可以试用了,估计插件的更新也差不多了吧,果断上github逛逛看看有没有sublime text 3能用的插件,经过几天折腾和试用,感觉不错,推荐给大家,各位就择你所好而用之。
Package control 插件管理
sublime text非常强大的插件管理的插件,按下Ctrl+Shift+P,输Package control就可以选择插件的安装、管理、删除等操作,因为sublime text 3的插件需要基于pyhone 3编写,所以用sublime text 2的安装方法不管用,可以看看我之前写的一篇文章,。
此外,安装sublime text 3的插件还可以在github上下载源文件,解压后改名放到
C:\Users\Mr.DenGo(你的电脑名)\AppData\Roaming\Sublime Text 3\Packages 中
重启sublime text 3即可生效。
BracketHighlighter 高亮显示匹配的括号、引号和标签
BracketHighlighter这个插件能在左侧高亮显示匹配的括号、引号和标签,能匹配的&[]&,&&()&,&&{}&,&&&&&,&''&,&&&tag&&/tag&等甚至是自定义的标签,当看到密密麻麻的代码分不清标签之间包容嵌套的关系时,这款插件就能很好地帮你理清楚代码结构,快速定位括号,引号和标签内的范围。
插件下载:
TrailingSpacer&高亮显示多余的空格和Tab
有时候在代码结尾打多了几个空格或Tab,一般不会察觉,TrailingSpacer这款插件能高亮显示多余的空格和Tab,并可以一键删除它们,有代码洁癖的朋友应该会喜欢这个插件。
插件下载:
注意,在github上下载的插件缺少了一个设置快捷键的文件,可以新建一个名字和后缀为Default (Windows).sublime-keymap的文件,添加以下代码,即可设置“删除多余空格”和“是否开启TrailingSpacer ”的快捷键了。
&keys&: [&ctrl+alt+d&], &command&: &delete_trailing_spaces& },
&keys&: [&ctrl+alt+o&], &command&: &toggle_trailing_spaces& }
Alignment 等号对齐
按Ctrl+Alt+A,可以将凌乱的代码以等号为准左右对其,适合有代码洁癖的朋友。
插件下载:
Clipboard-history 粘贴板历史记录
有了这个插件,便可方便使用sublime text 3里的粘贴板历史记录内容,快捷键Ctrl+Shift+V可调出该历史记录面板,按方向键选择想要粘贴的历史记录。不过这是sublime text 2下的插件,Ctrl+Shift+D清除粘贴板历史记录好像不能生效,不过重启sublime也可清除粘贴板的历史记录。
插件下载:
gbk4subl 支持GBK编码
sublime text一个遗憾是不支持中文GBK编码,在编辑一些GBK编码的文件时就会出现乱码,还好sublime text 2有很多可以支持GBK编码的插件,可惜大多在sublime text 3下都不能工作,在github找了下,还好还有gbk4subl这款能让sublime text 3支持GBK编码的插件。
插件下载:
Tradsim 中文繁字体和简体字转换
Tradsim是一款能把中文的繁字体和简体字互相转换的插件,只支持UTF-8编码,虽然觉得有点鸡肋,但还是介绍出来给需要的朋友吧,安装插件,因为插件包里没快捷键文件,所以我们可以自定义一个,可以新建一个名字和后缀为Default (Windows).sublime-keymap的文件,添加以下代码,即可设置“转换为简体字”和“转换为繁字体 ”的快捷键了。注意:转换是文件里全局的中文。
&&&&{&keys&:
[&ctrl+alt+s&], &command&: &tradsim_to_sim&},
&&&&{&keys&:
[&ctrl+alt+t&], &command&: &tradsim_to_trad&}
SideBarEnhancements 侧边栏增强
SideBarEnhancements本是增强侧边栏的插件,这里将教大家如何用来做sublime text 3浏览器预览插件,并可自定义浏览器预览的快捷键。
安装此插件,点击工具栏的preferences & package setting & side bar & Key Building-User,键入以下代码,这里设置按Ctrl+Shift+C复制文件路径,按F1~F5分别在firefox,chrome,IE,safari,opera浏览器预览效果,当然你也可以自己定义喜欢的快捷键,最后注意代码中的浏览器路径要以自己电脑里的文件路径为准。
&keys&: [&ctrl+shift+c&], &command&: &copy_path& },
&&&&//firefox
&keys&: [&f1&], &command&: &side_bar_files_open_with&,
&&&&&&&&&&&&&&args&:
&&&&&&&&&&&&&&&&&paths&:
&&&&&&&&&&&&&&&&&application&:
&C:\\software\\Browser\\Mozilla Firefox\\firefox.exe&,
&&&&&&&&&&&&&&&&&extensions&:&.*&
//匹配任何文件类型
&&&&&&&&&&&&}
&&&&//chrome
&keys&: [&f2&], &command&: &side_bar_files_open_with&,
&&&&&&&&&&&&&args&:
&&&&&&&&&&&&&&&&&paths&:
&&&&&&&&&&&&&&&&&application&:
&C:\\Users\\Mr.DenGo\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe&,
&&&&&&&&&&&&&&&&&extensions&:&.*&
&&&&&&&&&&&&}
&keys&: [&f3&], &command&: &side_bar_files_open_with&,
&&&&&&&&&&&&&&args&:
&&&&&&&&&&&&&&&&&paths&:
&&&&&&&&&&&&&&&&&application&:
&C:\\Program Files\\Internet Explorer\\iexplore.exe&,
&&&&&&&&&&&&&&&&&extensions&:&.*&
&&&&&&&&&&&&}
&&&&//safari
&keys&: [&f4&], &command&: &side_bar_files_open_with&,
&&&&&&&&&&&&&args&:
&&&&&&&&&&&&&&&&&paths&:
&&&&&&&&&&&&&&&&&application&:
&C:\\software\\Browser\\Safari\\safari.exe&,
&&&&&&&&&&&&&&&&&extensions&:&.*&
&&&&&&&&&&&&}
&&&&&//opera
&keys&: [&f5&], &command&: &side_bar_files_open_with&,
&&&&&&&&&&&&&&args&:
&&&&&&&&&&&&&&&&&paths&:
&&&&&&&&&&&&&&&&&application&:
&C:\\software\\Browser\\opera\\opera.exe&,
&&&&&&&&&&&&&&&&&extensions&:&.*&
&&&&&&&&&&&&}
ColorPicker 调色盘
在编辑CSS样式的时候,要加个自己喜欢颜色或改改颜色啥的,要到PS里去调色?ColorPicker可以让sublime text 3内置一个调色盘,调好颜色,点击OK就会在光标处生成十六进制颜色代码。
插件下载:
Hex-to-HSL-Color Hex颜色模式转HSL颜色模式
在用CSS3的一些属性时会用到HSL颜色模式,用软件转来转去确实麻烦,用Hex-to-HSL-Color这个插件便可轻松解决,鼠标选中一个或多个十六进制颜色代码,按下Shift+Ctrl+U立马转换为HSL颜色模式。
插件下载:
CSScomb CSS属性排序
有时候看看自己写的CSS文件,会不会觉得属性很乱查找不易维护难?CSScomb可以按照一定的CSS属性排序规则,将杂乱无章的CSS属性进行重新排序。选中要排序的CSS代码,按Ctrl+Shift+C,即可对CSS属性重新排序了,代码从此简洁有序易维护,如果不款选代码则插件将排序文件中所有的CSS属性。当然,可以自己自定义CSS属性排序规则,打开插件目录里的CSScomb.sublime-settings文件,更改里面的CSS属性顺序就行了。因为这个插件使用PHP写的,要使他工作需要在环境变量中添加PHP的路径,具体请看上的说明。
插件下载:
CSS Compact Expand CSS属性展开收缩
每个人写CSS都有不同的风格,有些人喜欢写成一行,有些人喜欢写成多行,各有各的好处,我倒喜欢将CSS写成一行,这样能减少CSS文件大小,且屏幕能显示更多的Class方便查找。如果阅读别人的代码不符合自己的习惯,可以用CSS Compact Expand这个插件将CSS格式化一下,按 Ctrl+Alt+[ 收缩CSS代码为一行显示,按 Ctrl+Alt+] 展开CSS代码为多行显示,此插件由sublime textQQ群里一个牛人封装。
插件下载:
JsFormat javascript格式化
有时从网上扒了人家的js代码来学习学习,打开发现被压缩了,这时就可以用JsFormat插件格式化js代码,恢复未压缩时候的排版,挺给力的。按快捷键Ctrl+Alt+F即可格式化当前的js文件了。
插件下载:
javascript-API-Completions
支持Javascript、JQuery、Twitter Bootstrap框架、HTML5标签属性提示的插件,是少数支持sublime text 3的后缀提示的插件,HTML5标签提示sublime text 3自带,不过JQuery提示还是很有用处的,也可设置要提示的语言。
插件下载:
SublimeTmpl 快速生成文件模板
一直都很奇怪为什么sublime text 3没有新建文件模板的功能,像html头部的DTD声明每次都要复制粘贴。用SublimeTmpl这款插件终于可以解脱了,SublimeTmpl能新建html、css、javascript、php、python、ruby六种类型的文件模板,所有的文件模板都在插件目录的templates文件夹里,可以自定义编辑文件模板。
SublimeTmpl默认的快捷键
ctrl+alt+h
ctrl+alt+j
javascript
ctrl+alt+c
ctrl+alt+p
ctrl+alt+r
ctrl+alt+shift+p
如果想要新建其他类型的文件模板的话,先自定义文件模板方在templates文件夹里,再分别打开Default (Windows).sublime-keymap、Default.sublime-commands、Main.sublime-menu、SublimeTmpl.sublime-settings这四个文件照着里面的格式自定义想要新建的类型,这里就详细介绍了,请各位自己折腾哈~
插件下载:
Emmet html/CSS快速编辑(原名Zen Coding)
Zen Coding估计大家都不会陌生,前不久改名为Emmet了,虽然用Emmet编辑html很快,但是要用好用快它需要付出不小的学习成本,学习的曲线有点陡峭,以至于让新手好奇而畏惧,我看看热闹就行了,感觉编辑得再快思维跟不上也是白搭,对我来说sublime text 3自带的代码提示够用了。网上有很多教学视频,有兴趣学习的可以去了解下。
插件下载:
sublimeLinter 代码错误提示
好话写在前面:sublimeLinter是少数几个能在sublime text 3工作的代码检查插件,sublimeLinter能检查html、css、javascript、php等众多语言的错误代码并给出提示,前提是需要配置相应语言的环境,要检查js代码需要安装node.js,检查php代码需要安装php并配置环境等,用这个插件能及时帮我们纠正代码的错误,并培养我们良好的编码习惯和风格。
丑话说在后面:对这货“强制性”的代码风格检查有点不爽,有意义无意义的代码提示经常打乱我敲代码的节奏,并且在后台运行检查机制造成sublime text 3有点小卡顿,虽然部分问题可以设置sublimeLinter来解决,用了sublimeLinter一小段时间后还是放弃了,觉得代码提示对我应该没必要了。
插件下载:
以上插件只是个人觉得好用,各位就择你所好而用之,在win8下sublime text 3中测试工作正常,点击这里还可以查看更多。细心的朋友也发现很多插件的快捷键重叠了,各位就依自己所好设置就行了。最后注意的是在github上下载插件时先看看插件有没有明确说明支持sublime text3,如果没有看看branch分支有没有st3版本的插件,不要下载错了插件版本。
笔者作为一名程序员,使用过无数的代码编辑器,这当中有使用方便快捷的,有可以很好锻炼代码能力的,用过这么多,笔者认为当属sublime text 和ediplus这两款编辑器最受程序员们的青睐。
Sublime作为一款简洁、性感的软件,给程序员带来了不少方便,尤其是其强大的快捷方式以及代码提示。今天由笔者来跟大家分享一下sublime text &的快捷键使用方法。
Ctrl+M 光标跳至对应的括号
Alt+. 闭合当前标签
Ctrl+Shift+A 选择光标位置父标签对儿
Ctrl+Shift+[ 折叠代码
Ctrl+Shift+] 展开代码
Ctrl+KT 折叠属性
Ctrl+K0 展开所有
Ctrl+U 软撤销
Ctrl+T 词互换
Tab 缩进 自动完成
Shift+Tab 去除缩进
Ctrl+Shift+↑ 与上行互换
Ctrl+Shift+↓ 与下行互换
Ctrl+K Backspace 从光标处删除至行首
Ctrl+Enter 光标后插入行
Ctrl+Shift+Enter 光标前插入行
Ctrl+F2 设置书签
F2 下一个书签
Shift+F2 上一个书签
Ctrl+L 选择整行(按住-继续选择下行)
Ctrl+KK 从光标处删除至行尾
Ctrl+Shift+K 删除整行
Ctrl+Shift+D 复制光标所在整行,插入在该行之前
Ctrl+J 合并行(已选择需要合并的多行时)
Ctrl+KU 改为大写
Ctrl+KL 改为小写
Ctrl+D 选词 (按住-继续选择下个相同的字符串)
Ctrl+M 光标移动至括号内开始或结束的位置
Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号)
Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果)
Ctrl+Shift+/ 注释已选择内容
Ctrl+Z 撤销
Ctrl+Y 恢复撤销
当然,快捷键是它的一大特色,强大的代码少写更是其受欢迎的原因,假如安装了zend coding插件,那么sublime text真是一款无敌的代码编辑器了。比如输入div#aa.bb&p*3可以自动生成一个id为aa,类为bb并且拥有三个p子标签的div.具体实现方法可以参考下面的参考资料。
排名:第3027名
(3)(49)(55)(90)(18)(4)(3)(14)(78)(15)(4)(13)(19)(67)(1)(3)(73)(7)(2)(17)(22)(3)(43)(71)(6)(1)(1)(1)(2)(2)(6)(13)(6)(1)(1)(10)(6)(4)(8)(6)(1)(2)}

我要回帖

更多关于 outlook 插件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信