Sublime text 2 how to delete comments only

2019-01-30 20:49发布

In my sass code, I have inline comments and I wish to remove these in sublime text. Is it possible to permanently delete all comment content alone?

@function emCalc($values) {
  $emValues: '';
  $max: length($values); //Get the total number of parameters passed
  @for $i from 1 through $max {
    $value: (nth($values, $i)); //Take the individual parameter
    $value: $value / ($value * 0 + 1); //Doing this gets you one unit (1px)
    $value: $value / $em-base * 1em; //Divide the px value by emBase and return the value as em
    $emValues: #{$emValues + $value}; //Append to array
    @if $i < $max {
      $emValues: #{$emValues + " "}; //Adding space between parameters (except last), if there are multiple parameters
    }
  }
  @return $emValues; //Call emCalc like so emCalc(10, 20, 30, 40) it should return margin: 0.625em 1.25em 1.875em 2.5em
}

6条回答
手持菜刀,她持情操
2楼-- · 2019-01-30 20:57

None of the answers here seem to take advantage of the fact that the syntax highlighting has already determined where all the comments are - just execute this in the Python console (View menu -> Show Console) to select all comments:

view.sel().clear(); view.sel().add_all(view.find_by_selector('comment'))

(press Enter after typing/pasting it to execute it) then press Delete to delete all the selections and Esc to go back to single selection mode

查看更多
Emotional °昔
3楼-- · 2019-01-30 20:57

Well well, there is an easy way to do it in mac Sublime Text if you are sure there are no // in print statements.

search for // and hit that cmd+ctrl+G and then to select the whole line which has hit cmd+shift+Arrow and delete it. Assuming you have used only single line comments

查看更多
看我几分像从前
4楼-- · 2019-01-30 21:03

You'll need to double check this (have a backup handy!), but the following regular expression should work in the "replace" window, with regular expressions enabled (the * icon):

  1. Open the "replace" window (ctrl + h / cmd + option + f)
  2. Enable regular expression matching by making sure the * icon is selected
  3. Enter the following in the "Find What?" box

    \/\/.*
    
  4. Leave the "replace with" box empty to delete found text.

  5. Click "Replace All"

Edit

as @ollie noted, this also will delete any urls prefixed with //. The following (lightly tested) regex should serve to better target comments: (^\/\/.*)|(\s+\/\/.*)

Edit v2

A solution for single and multi-line comments (^\/\/.*)|(\s+\/\/.*)|((\/\*)(.|\n)+?(\*\/))

查看更多
手持菜刀,她持情操
5楼-- · 2019-01-30 21:10

Here is what I do in ST3 in HTML to strip all comments, especially nasty comments embedded within <p> body text, for example ...

  1. package control install SelectUntil

  2. quit and restart sublime

  3. ctrl+f <!--

  4. alt+enter to select all instances of <!--

  5. ctrl+shift+s will pull up an input field, where you can type: -->

  6. hit delete!

查看更多
Lonely孤独者°
6楼-- · 2019-01-30 21:11

If you have no other possibility, you could select every // (Select first // then CtrlD while there's comments left if my memory is correct).

Then press ShiftEnd to select every end of line with a // and Del ! :)

(There's probably a plugin for that, but this is the simplest method I think. This suggest that all your // refers to the beginning of a comment, of course)

查看更多
Bombasti
7楼-- · 2019-01-30 21:11

None of the other answers cover all cases (multi-line comments, single line comments, double-slash comments and slash-star/star-slash comments).

In order to match all possible cases (without matching URLs), use the following:

(^[\s]*?\/\/.*)|(/\*[\s\S]+?\*/)
查看更多
登录 后发表回答