Я сделал <F4>
ключ, по-видимому, работает во всех режимах при помощи map <expr>
выражение отображается следующим образом:
MapOptToggle <F4> relativenumber
MapOptToggle! <S-F4> number
command! -bang -nargs=+ MapOptToggle call <SID>MapOptToggle(<bang>0, <f-args>)
function! s:MapOptToggle(bang, key, opt)
function! s:ToggleOpt(opt)
if mode() =~# '\vno?' || !&showmode
exec 'set ' . a:opt . '! ' . a:opt . '?'
else
exec 'set ' . a:opt . '!'
endif
redraw
return ''
endfunction
let a='noremap'
let b='<unique> <silent> <expr> ' . a:key . ' <SID>ToggleOpt(' . string(a:opt) . ')'
exec a . ' ' . b
exec a . '! ' . b
exec 'set ' . (a:bang ? 'no' : '') . a:opt
endfunction
Но тем не менее мой ответ не объясняет непредсказуемое поведение imap
карта режима вставки.
Вы неправильно истолковываете вывод.
Это просто, что те файлы (cmdline, окружите...), не завершаются символом новой строки.
Так, например, если /proc/pid/cmdline
содержит xxx
, cat /proc/pid/cmdline
произведет xxx
, но потому что нет никакого символа новой строки (который терминальная дисциплина преобразовывает на выводе в CRLF), курсор не вернется к началу строки (CR), ни понизится одним (LF).
Затем на выход, Ваша оболочка произведет свою подсказку для ожидания следующей команды, таким образом, Вы будете видеть что-то как:
xxx$
и если существует a echo $?
, это будет:
xxx0
$
Если файл содержит больше, чем xxx
, это может стать более сбивающим с толку.
Если Вы хотите, чтобы символ новой строки был добавлен, когда он отсутствует, Вы могли использовать cut
вместо cat
:
#! /bin/sh -
cut -b1- < "$1"
Я вижу, если 1$ оценивает к пустой строке, этому cat
ожидание должно читать из stdin. Затем необходимо поразить Ctrl-D или Ctrl-C близкой кошке, таким образом, сценарий может продолжиться. Для этой проблемы а именно, я попробовал бы
cat "${1:-/dev/null}"
Так, чтобы, если 1$ пуст или сброс, то, по крайней мере, кошка заставляет допустимое имя файла с конечным содержанием продолжать работать.
cat "$1"
не была бы проблема если $1
были пусты. Лучше, cat < "$1"
избегать проблем если $1
-
или опция.
– Stéphane Chazelas
21.12.2013, 01:01
tr '\0' '\n'
? – glenn jackman 21.12.2013, 02:03xxx$
Я только вижуxxx
без него перерисовывающий подсказку или печатающийecho $?
, и просто ожидает следующей команды. Курсор находится все еще наxxx
строка, поскольку Вы указываете на это, должна быть. – user54945 21.12.2013, 18:42