Для меня редактирование количества поддерживаемых цветов (см. : help t_Co
) является решением:
set t_Co=0
При выделении различий возникают проблемы с окраской (например, желтым по белому), независимо от того, включена ли подсветка синтаксиса или нет.
Выделение различий, являющееся целью vimdiff, по-прежнему работает с этой опцией, но просто как обратное видео, которое можно прочитать здесь.
Вы можете настроить другие параметры, упомянутые ранее, но это устраняет проблему с удобочитаемостью.
Я считаю, что вы не можете использовать -I
таким образом.
Но вы можете получить желаемый эффект / поведение, сказав:
echo {1..8} | xargs -n2 sh -c 'echo "the number $1 comes before $2"' sh
Это, по сути, создает специальныйоднострочный сценарий оболочки
который xargs
выполняется с помощью sh -c
.
Два значения, которые xargs
анализирует из входных данных
передаются этому «сценарию».
Затем оболочка присваивает эти значения $1
и $2
,
на который вы затем можете ссылаться в «сценарии».
prueba esto:
echo {1..8} |xargs -n 2 bash -c 'echo "the number $0 comes before $1"'
En el caso específico de printf
, siempre podrías hacer:
echo {1..8} | xargs printf 'the number %s comes before %s\n'
porque printf
tiene una capacidad intrínsecaxargs
-para ejecutar varias veces si se le dan más argumentos de los que necesita para una sola invocación. Aunque eso tiene poca ventaja sobre
printf 'the number %s comes before %s\n' {1..8}
Y para listas grandes, el simple comando xargs
podría resultar en xargs
ejecutando varias instancias de printf
, algunos de los cuales pueden tener números impares de argumentos. Puede pasar -n 1000
a xargs
para protegerse contra eso, donde 1000 es un número par que debe ser lo suficientemente pequeño como para no alcanzar el límite de la lista de argumentos demasiado larga y lo suficientemente grande como para evitar que se ejecute muchos printf
art.
Tenga en cuenta que xargs
llamaría, no el printf
integrado de su shell, sino lo externo printf
, con cada invocación en un nuevo proceso separado.
También tenga en cuenta que para una entrada vacía, excepto en algunos BSD, aún se ejecutaría printf
una vez sin ningún argumento. GNU xargs
y compatibles tienen un -r
(o--no-run-if-empty
)opción para evitar eso.
Para ser claros, esta simple respuesta es específica para su printf
ejemplo, y no funcionaría en el caso general donde debe pasar dos parámetros a la vez a su comando (como sería el caso de diff
, por ejemplo ). Para resolver el problema general con zsh
, puedes usar:
for i j ({1..8}) echo "the number $i comes before $j"