Действительно ли Java всегда является интервалом 32 бита?

Короткий, безопасный, без плагина:
:sav new_name
:!rm #  // or !del # for windows

control kbd> + R kbd>, # kbd> мгновенно расширится до альтернативный файл (ранее отредактированный путь в текущем окне) перед нажатием Enter kbd>. Это позволяет нам проверить, что именно мы собираемся удалить. Использование канала | в таком случае не небезопасно, потому что если sav не удастся по какой-либо причине, # все равно будет указывать на другое место (или на ничто). Это означает, что !rm # или delete(expand(#)) могут удалить совершенно другой файл! Поэтому делайте это вручную или используйте хороший сценарий (они упоминаются здесь во многих ответах).

Обучающие

... или попробуйте самостоятельно создать функцию / команду / скрипт. Начните с простого, например:

command! -nargs=1 Rename saveas  | call delete(expand('#')) | bd #

после перезагрузки vimrc, просто наберите :Rename new_filename. В чем проблема с этой командой?

Тест безопасности 1: Что означает :Rename без аргумента?

Да, он удаляет файл, скрытый в '# '!

Решение: вы можете использовать, например. условия или try выражение, подобное этому:

command! -nargs=1 Rename try | saveas  | call delete(expand('#')) | bd # | endtry

Тест безопасности 1: :Rename (без аргумента) выдаст ошибку:

E471 : Требуется аргумент

Тест безопасности 2: Что если имя будет таким же, как и у предыдущего?

Тест безопасности 3: Что, если файл будет в другом месте, чем вы на самом деле?

Исправьте это самостоятельно. Для удобства чтения вы можете написать это следующим образом:

function! s:localscript_name(name):
  try
    execute 'saveas ' . a:name
    ...
  endtry
endfunction
command! -nargs=1 Rename call s:localscript_name()

отмечает

  • !rm # лучше, чем !rm old_name -> вам не нужно помнить старое имя [1157]
  • !rm # лучше, чем !rm #, когда вы делаете это вручную -> вы увидите, что вы фактически удаляете (причина безопасности)

  • !rm, как правило, не очень безопасны ... mv лучше места для мусора

  • call delete(expand('#')) лучше, чем команда оболочки (независимая от ОС), но длиннее для ввода и невозможно использовать control kbd> + R kbd>

  • try | code1 | code2 | tryend -> при ошибке происходит, когда code1, не запускает code2

  • :sav (или :saveas) эквивалентно :f new_name | w - см. file_f - и сохраняет историю отмен

  • expand('%:p') дает полный путь вашего местоположения (%) или местоположения альтернативного файла (#)

76
задан nicael 21 May 2014 в 21:46
поделиться

2 ответа

int - 32 бита. Если вам нужно больше, long являются 64-битными.

7
ответ дан 24 November 2019 в 11:19
поделиться

Да, это определено в Спецификации языка Java .

Из раздела 4.2: Примитивные типы и значения :

Целочисленные типы - это байт , короткий , int и long , значения которых 8-битные, 16-битная, 32-битная и 64-битная подписанная целые числа с дополнением до двух, соответственно, и char , значения которых 16-битные целые числа без знака представляющие единицы кода UTF-16 (§3.1).

И дополнительно из Раздел 4.2.1: Интегральные типы и значения :

Значения интегральных типов целые числа в следующих диапазонах:

  • Для байтов от -128 до 127 включительно
  • Для краткости от -32768 до 32767 включительно
  • Для int от -2147483648 до 2147483647 включительно
  • Для длинных , от -9223372036854775808 до 9223372036854775807, включительно
  • Для char, от '\ u0000' до '\ uffff' включительно, то есть от 0 до 65535
116
ответ дан 24 November 2019 в 11:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: