Как открыть скопированный файл по VI

Скажем, у меня есть «.txt». Я хотел бы скопировать файл и открыть вновь скопированный файл с помощью VI.

cp a.txt b.txt vi b.txt 

Как совместить две команды в команде?

Вы можете использовать саму vi для копирования, открыв a.txt, затем сохранив содержимое в b.txt (фактически скопировав его), а затем переключившись на b.txt.

Собираем все вместе:

 vi -c 'w b.txt' -c 'e#' a.txt 

Это эквивалентно запуску vi a.txt , за которым следует команда :w b.txt (внутри vi ), которая сохранит содержимое в файл с именем b.txt. Но на этом этапе vi все равно будет редактировать a.txt, поэтому вы должны выполнить команду :e# , которая означает «редактировать альтернативный файл» (или «редактировать последний файл»), а учитывая, что vi только что коснулся b.txt, он будет переключиться на редактирование этого файла.

используя оператор &&

 cp a.txt b.txt && vi b.txt 

Вы можете написать свою собственную функцию и использовать эту функцию. В приведенном ниже примере вы можете использовать cp1 в качестве команды.

пример:

 $ cat test.txt function cp1() { source_file=$1 destination_file=$2 cp "${source_file}" "${destination_file}" vi "${destination}" } $ . ./test.txt $ cp1 a.txt b.txt 

Если вы хотите сохранить способ ввода, вы можете использовать функциональность bash build, чтобы повторить последнее слово предыдущей команды. Вы можете сделать это с помощью ALT +.

 > cp a.txt b.txt > vi ALT+. 

Очень полезно и напоминает вам о точечном операторе vim.

Удачного игры в гольф.