欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

玩欧卡就用莱仕达V99方向盘欧卡2入门方向盘选莱仕达V9莱仕达折叠便携游戏方向盘支架欢迎地图Mod入驻
查看: 6170|回复: 0
收起左侧

notepad++全局变量

[复制链接]
oppo 发表于 2015-5-20 16:46 | 显示全部楼层 |阅读模式
http://www.cnblogs.com/maxupeng/archive/2011/05/04/2036136.html

一、全局变量
[tex=code]$(FULL_CURRENT_PATH) : E:\my Web\main\welcome.html
$(CURRENT_DIRECTORY) : E:\my Web\main
$(FILE_NAME) : welcome.html
$(NAME_PART) : welcome
$(EXT_PART) : html
$(NPP_DIRECTORY) : the full path of notepad++'s directory
$(CURRENT_WORD) : word(s) you selected in Notepad++
$(CURRENT_LINE) : current line number
$(CURRENT_COLUMN) : current column number[/tex]
二、配置运行宏("运行"菜单的"运行"子菜单)

1. 编译当前打开的java源文件

cmd /K cd /D $(CURRENT_DIRECTORY) && javac $(FILE_NAME)
2. 执行当前打开的java源文件对应的class文件

cmd /K cd /D $(CURRENT_DIRECTORY) && java $(NAME_PART)
3. 编译并运行当前打开的java源文件

cmd /K cd /D $(CURRENT_DIRECTORY) && javac $(FILE_NAME) && java $(NAME_PART)
三、疯狂改造

1. 将编译下边的C源码编译成exec_head.exe,放到notepad++的安装目录

[tex=code]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static int buf_i = 0;
static int buf_size = 0;
static char *buf = NULL;
static void _buf_add(char c) {
    if (c == -1) {
        if (buf_i > 0) buf_i--;
        return;
    }
    if (buf == NULL || buf_i == buf_size) {
        buf_size += 1024;
        buf = (char *)realloc(buf, buf_size);
        if (buf == NULL) exit(1);
    }   
    buf[buf_i++] = c;
}

static int _fgetc(FILE *file)
{
    char c = fgetc(file);
    if (c == '\n') {
        if (fgetc(file) != '/' || fgetc(file) != '/')
            return EOF;
        else c = fgetc(file);
    }
    if (c == '\n' || c == '#') {
        return EOF;
    }
    return c;
}

int main(int argc, char *argv[])
{   
    if (argc < 2) return 1;
     
    FILE *file = fopen(argv[1], "r");
    if (!file) return 1;
     
    if (fgetc(file) != '/' || fgetc(file) != '/' || fgetc(file) != '#')
        return 1;
     
    char c = _fgetc(file);
    while (c == ' ' || c == '\t') c = _fgetc(file);
    while (c != EOF) {
        if (c == ' ' || c == '\t') {
            do { c = _fgetc(file); } while (c == ' ' || c == '\t');
            if (c != ';') _buf_add(' ');
        } else if (c == ';') {
            do { c = _fgetc(file); } while (c == ' ' || c == '\t');
            if (c != EOF) _buf_add(';');
        } else {
            _buf_add(c);
            c = _fgetc(file);
        }
    }
    fclose(file);
     
    _buf_add('\0');
     
    char *cmd = strtok(buf, ";");
    while (cmd) {
        printf("#exec:%s\n", cmd);
        system(cmd);
        cmd = strtok(NULL, ";");
    }
    free(buf);
    buf = NULL;
     
    return 0;
}[/tex]
2. 配置运行宏,并设置快捷键Ctrl + Shift + H

cmd /K cd /D $(CURRENT_DIRECTORY) && $(NPP_DIRECTORY)/exec_head.exe $(FILE_NAME)
3. 若当前打开的文件以"//#"开头的话,程序会将"//#"至"#"之间的文本解释成命令并执行,命令间可用";"分割,如

//#
//  javac Test.java;
//  java Test
//#

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}
4. 按下快捷键Ctrl + Shift + H,将弹出一个CMD窗口:

#exec:javac Test.java
#exec:java Test
Hello

联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2024-11-25 13:53 , Processed in 0.032901 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表