vim: добавить комментарий макросы - PullRequest
4 голосов
/ 25 октября 2010

Vim почти идеально подходит для меня. Но я все еще хочу использовать комментарий к строке и комментарий к блоку, я хочу знать, как написать vimrc для этого на python и javascript.

Нет дополнений

Ответы [ 3 ]

4 голосов
/ 25 октября 2010
3 голосов
/ 28 октября 2010

Если вам нужны комментарии в стиле c (которые, как я считаю, допустимы в javascript), вы можете установить следующее в вашем .vimrc, который закомментирует строку, в которой находится курсор (в обычном режиме). *

map \lo I/*<Esc>A*/<Esc>

Если вы хотите комментарии к Python, вы можете сделать следующее:

map \lo I#<Esc>

Если вы хотите иметь только одно утверждение, вы можете сделать:

if match(expand("%:t"), ".py") != -1
  map \lo I#<Esc>
else
  map \lo I/*<Esc>A*/<Esc>
endif

, который будет использовать # комментарий, если вы редактируете файл .py, а в противном случае используйте / * ... * / comment.

РЕДАКТИРОВАТЬ: следующая функция закомментирует визуально выбранный блок с соответствующими комментариями стиля, проверив тип файла. Затем вы можете сопоставить его с чем-то простым, например с оператором vmap, следующим за функцией.

  function! BlockComment(top,bottom)

    " deal with filetypes that don't have block comments 
    let fileName = expand("%:t")
    echo fileName

    if fileName =~ "\.py" || fileName =~ "\.sh" || fileName =~ "\.pl"
        execute "normal I# "
        return
    elseif fileName =~ "\.vim"
        execute 'normal I" '
        return
    endif

    " for c-style block comments (should work for javascript)
    let topLine = line("'<")

    " the + 1 is because we're inserting a new line above the top line
    let bottomLine = line("'>") + 1

    " this gets called as a range, so if we've already done it once we need to
    " bail
    let checkLine = getline(topLine - 1)
    if (checkLine =~ '\/\*')
        return
    endif

    let topString = "normal " . topLine . "GO/*"
    let bottomString = "normal " . bottomLine . "Go*/"

    execute topString
    execute bottomString

  endfunction

  vmap <Leader>bco<CR> :call BlockComment()<CR>

Игнорировать причудливую подсветку синтаксиса. Похоже, что подсветка синтаксиса не поддерживает vimscript.

1 голос
/ 26 октября 2010

tcomment предоставляет оператора, который достаточно хорошо интегрируется с тем, как работает vim: http://www.vim.org/scripts/script.php?script_id=1173

Он поддерживает меньше стилей комментирования, чем уже упоминавшийся ботаник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...