: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')
дает полный путь вашего местоположения (%
) или местоположения альтернативного файла (#
)
int
- 32 бита. Если вам нужно больше, long
являются 64-битными.
Да, это определено в Спецификации языка 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