Не преобразовывайте строку версии в целое число. Сравните струны.
Это немного излишне для вашего варианта использования, но вот функция оболочки, которая сравнивает типичные строки версий. Он следует подмножеству правил сравнения версий Debian :
Обратите внимание, что последняя точка: 1.01
считается равной 1.1
. Это цена, которую нужно заплатить за 1,1
и 1,9
, которые будут считаться меньшими, чем 1,10
.
Для этого кода требуется тире, bash, ksh или zsh. Чтобы использовать его с другими оболочками, такими как BusyBox sh, замените вызовы [" STRING1 " \> " STRING2 "]
на expr "a STRING1 "\>" a STRING2 "
.
version_ge () (
version1="$1" version2="$2"
while true; do
prefix1="${version1%%[0-9]*}" prefix2="${version2%%[0-9]*}"
if [ "$prefix1" \> "$prefix2" ]; then return 0; fi
if [ "$prefix2" \> "$prefix1" ]; then return 1; fi
version1="${version1#"$prefix1"}" version2="${version2#"$prefix2"}"
prefix1="${version1%%[!0-9]*}" prefix2="${version2%%[!0-9]*}"
version1="${version1#"$prefix1"}" version2="${version2#"$prefix2"}"
case "$prefix2" in
0*[!0]*) prefix2="${prefix2##"${prefix2%%[!0]*}"}";;
*[!0]*) :;;
*) return 0;;
esac
case "$prefix1" in
0*[!0]*) prefix1="${prefix1##"${prefix1%%[!0]*}"}";;
*[!0]*) :;;
*) return 1;;
esac
if [ "${#prefix1}" -gt "${#prefix2}" ]; then return 0; fi
if [ "${#prefix1}" -lt "${#prefix2}" ]; then return 1; fi
if [ "$prefix1" \> "$prefix2" ]; then return 0; fi
if [ "$prefix2" \> "$prefix1" ]; then return 1; fi
done
)
Почти готово. Вам нужно добавить эти строки в ваш .vimrc
:
nnoremap <C-j> <C-d>
nnoremap <C-k> <C-u>
Когда я хочу узнать, как работает vim, я считаю полезным : help
.
С ними сначала нужно разгруппировать:
Например, для CTRL+J поместите следующую строку в файл '.vimrc':
let g:BASH_Ctrl_j = 'off'