Портал

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Портал » helix редактор. Руководство по русски » 06-helix[Русский]-Учебник.Буфера


06-helix[Русский]-Учебник.Буфера

Сообщений 1 страница 2 из 2

1

06-helix[Русский]-Учебник.Буфера.Часть01
# 6. Tutorial: Buffers
John Myers edited this page Mar 2, 2025 ·
[3 revisions](https://github.com/helix-editor/helix/w … s/_history)

Окна позволяют просматривать несколько буферов одновременно и управлять ими.
Например, вы можете копировать код из файла A и вставлять его в файл B построчно,
внося небольшие правки.
Для этой задачи было бы уместно, чтобы два окна были открыты параллельно.

Разница между окнами и буферами

## Buffers-Открытие нескольких файлов
[Buffers-Открытие нескольких файлов](https://github.com/helix-editor/helix/w … iple-files)

Давайте начнем с командной строки, в которой мы использовали для открытия файлов с помощью
`helix <filename>`.

На этот раз давайте откроем несколько файлов!
```shell
helix file1 file2 file3
```
Если вы запустите приведенную выше команду, то просто увидите пустой экран.
Но обратите внимание на `Loaded 3 files.`
сообщение в левом нижнем углу? У нас открыты все эти файлы.
Оставьте сообщение в первом буфере:

```
this is buffer #1
```

## Buffers-Навигация
[Buffers-Навигация](https://github.com/helix-editor/helix/w … ng-buffers)

Чтобы перейти к следующему буферу, используйте команду `gn` для
_**g**oto **n**ext_.

Оставьте еще одно сообщение здесь.
```
this is buffer #2
```

А затем давайте проделаем то же самое с третьим буфером:

```
this is buffer #3
```

Вы можете перейти к предыдущим буферам, используя "gp".
Поэтому попробуйте переключаться между ними с помощью команд, которые мы изучили сейчас:
- `gn` для перехода к следующему буферу
- `gp` для перехода к предыдущему буферу

## Buffers-Bufferline
[Buffers-Bufferline](https://github.com/helix-editor/helix/w … bufferline)
`bufferline`="строка буферизации"
`set bufferline always` = "установить буферную строку всегда"
`:set bufferline multiple`= ":установить несколько буферных строк

Когда функция включена, `bufferline` отображает все буферы в виде строки в верхней части экрана.
Включите буферную строку с помощью
`set bufferline always` или
`:set bufferline multiple`.
Теперь мы можем видеть все три наших файла,
указывая, какие буферы открыты в данный момент и какой из них сфокусирован.

## Buffers-Opening buffers with a glob
## Буферы - Открытие буферов с помощью глобуса

[Buffers-glob](https://github.com/helix-editor/helix/w … ith-a-glob)
glob=шаблон
Давайте сохраним все файлы и закроем.
Мы могли бы использовать `:wqa` to
_**w**rite **q**uit **a**ll_ но мы будем использовать
`:xa`
это точно то же самое, но на 1 символ короче!

Продолжайте и откройте эти файлы снова,
на этот раз мы не будем вводить их имена вручную, а воспользуемся
[glob](https://tldp.org/LDP/abs/html/globbingref.html).

Нам нужен шаблон, который _expands_ распахнётся к
`file1 file2 file3`,
какую закономерность мы можем заметить в этих файлах? Ну,
все они начинаются со строки `file`.

Итак, мы могли бы сделать что-то вроде этого:
```shell
hx file*
```

Это будет соответствовать каждому файлу в текущем каталоге, который начинается со строки
`file` а затем имеет _whatever_ в конце.

The "_whatever_" это именно то, что обозначает звездочка -- `*` представляет.
`*` это подстановочный знак, который соответствует
_literally anything_, так что это будет соответствовать
`file1`, `file2` и `file3`

Когда мы выполним эту команду, helix откроет те же 3 буфера.

Подпись автора

Подпись: С уважением, Максим.
мой jabber id : maksim.nk@jabber.ru ;

0

2

06-helix[Русский]-Учебник.Буфера.Часть02
## Opening buffers with more complex filtering logic
## Открытие буферов с помощью более сложной логики фильтрации
[Buffers-opening-more](https://github.com/helix-editor/helix/w … ring-logic)

Эта команда откроет каждый отдельный файл с помощью
`.rs` расширение в текущем каталоге, рекурсивно. Таким образом, он будет открывать даже супер вложенные файлы, такие как
`./some/directory/some/where/very/nested/main.rs`:

```shell
hx **/*.rs
```

Или, в качестве другого примера, мы хотим открыть буфер в Helix для каждого файла,
содержащего строку `export default async function`,
using the GNU utilities
[`find`](https://www.gnu.org/software/findutils/ … /find.html)
and [`grep`](https://www.gnu.org/software/grep/) we can do just that:

```shell
hx $(find . -type f -exec grep -l \
"export default async function" {} +)
```

Let's dissect the command:

- `find .`: Выполните поиск по каждому файлу и каталогу в текущем каталоге и любых подкаталогах.
- `-type f`: Сопоставляйте только файлы, а не каталоги.
- `-exec grep -l "export default async function" {}`:
Выполняет следующую команду для каждого файла: выполняет поиск строки
`export default async function`, выводим имена файлов, которым он соответствует.
- `+` группирует файлы.
- Вся команда `find . -type f -exec grep -l "export default async function" {} +`
приведенные выше имена всех совпадающих файлов будут выведены следующим образом:

```
./file-one.js
./nested/another-file.js
./somewhere/deep/nested/file.ts
```

"shell variable expansion" = "расширение переменной оболочки"

Placing it inside of
`$( ... )` uses
[shell variable expansion](https://www.gnu.org/software/bash/manua … nsion.html) чтобы эффективно заменить всю команду следующим идентичным выводом:

```shell
hx ./file-one.js \
   ./nested/another-file.js \
   ./somewhere/deep/nested/file.ts
```

Который затем открывает каждый из этих файлов в Helix в виде отдельного буфера.
Эта функция удобна, когда вам нужно выполнить определенную задачу для каждого отдельного файла, соответствующего шаблону, но эта задача не может быть автоматизирована,
поскольку каждый файл требует проверки вручную.

## Opening buffers at specific line and column numbers

[](https://github.com/helix-editor/helix/w … mn-numbers)

Наконец, полезно знать, что Helix может открывать файлы с определенными номерами строк, а также столбцов. Например, эта команда открывает`main.rs` file at line 122:

```shell
hx main.rs:122
```

В строке 122, столбец 6, откроется следующая информация:

```shell
hx main.rs:122:6
```

Мы можем использовать приведенные выше два факта, чтобы сделать некоторые выводы.
**_truly powerful_** commands.
      Вместо того чтобы вручную просматривать более 40 файлов markdown,
чтобы исправить эти орфографические ошибки, запустите следующую команду, с которой мы сейчас разберемся:

```shell
hx $(pnpm dlx cspell **/*.mdx | rg "^\S+")
```
Эта команда найдет все орфографические ошибки, используя`cspell` утилиту
`cspell` можно использовать следующим образом для проверки орфографии каждого
`.mdx` file (these files which contain _this site_'s content):

```shell
pnpm dlx cspell **/*.mdx
```

Он выводит информацию в следующем формате:
```shell
usage/text-objects.mdx:43:53 - Unknown word (nside)
usage/text-objects.mdx:43:62 - Unknown word (textobject)
```

Поскольку Helix может работать с первой частью текста перед пробелом,
мы хотим отфильтровать все до первого пробела.

Мы можем сделать это, сопоставив "последовательность символов без
пробелов в начале" с этим регулярным выражением:
`^\S+`.

- `^` означает "в начале".
- `\S` означает "символ, не состоящий из пробелов".
- `+` означает "совпадение по крайней мере с одним вхождением"

Таким образом, это регулярное выражение извлечет следующее из приведенного выше примера:

```shell
usage/text-objects.mdx:43:53
usage/text-objects.mdx:43:62
```

Чтобы применить регулярное выражение к выходным данным `cspell` tool, we use
[`ripgrep`](https://github.com/BurntSushi/ripgrep)
который является современной альтернативой `grep`, so the following command:
```shell
pnpm dlx cspell **/*.mdx | rg -o "^\S+"
```

Приведет к получению результата, подобного этому:
```
basics.mdx:6:22 basics.mdx:82:56 basics.mdx:236:51 basics.mdx:297:72 basics.mdx:305:109 basics.mdx:309:104 installation.mdx:6:40
```

Чтобы использовать это в helix, мы просто заключаем всю команду в
`$( ... )`чтобы использовать расширение оболочки:

```shell
hx $(pnpm dlx cspell **/*.mdx | rg -o "^\S+")
```
Чрезвычайно мощн0. - он будет открывать каждую орфографическую ошибку
в качестве буфера, мы сможем обходить их с помощью
"gn" и "gp".

### Buffers-Tip(Совет)
[Buffers-Совет](https://github.com/helix-editor/helix/w … uffers#tip)

Ripgrep также включает в себя `--vimgrep` флаг, который будет выводить
каждое совпадение, начинающееся именно с того синтаксиса, который нам нужен:

```
filename:line_number:column_number
```

## Буферы - одновременный просмотр нескольких буферов
[Buffers-Несколько](https://github.com/helix-editor/helix/w … rs-at-once)

До сих пор мы исследовали возможность открытия нескольких файлов в фоновом режиме,
но на самом деле мы видели только один буфер одновременно.
Для переключения между ними нам приходилось нажимать такие команды, как gp и gn.

Возможно открыть несколько файлов одновременно.
Например, если у нас открыт наш "файл1, файл2, файл3".

Мы можем открыть "split" by using `Ctrl + w + s`.

Our cursor is at the bottom split.
To navigate to the upper split, we use motions which are similar to
h, j, k and l:

- Ctrl + w + h перемещается в буфер выше
- Ctrl + w + j перемещается в буфер ниже
- Ctrl + w + k перемещается в буфер on the вправо
- Ctrl + w + l перемещается в буфер on the влево

У каждого из этих буферов есть выделенная строка состояния.
В строке состояния текущего активного буфера будет отображен его режим.

Внутри этих буферов мы можем использовать их как обычно.
Таким образом, мы можем переключаться между разными буферами,
используя
`gn` для перехода к следующему, и
`gp` для перехода к предыдущему.
      Пусть все буферы представляют разные файлы.
Теперь закройте их один за другим с помощью `Ctrl + w + q`.

## Открытие разделов из командной строки
[Buffers-opening-splits](https://github.com/helix-editor/helix/w … mmand-line)

Флаги `--vsplit` и `--hsplit` можно использовать в Helix, чтобы открывать
все файлы как с вертикальным, так и с горизонтальным разделением.

Let's quit completely with
`:xa` yet again,
Эта команда открыла два файла, но на этот раз с разделением по вертикали,
а не по горизонтали:

```shell
hx --vsplit file1 file2
```

Давайте закроем буфер #2 with `Ctrl + w + q` чтобы изучить нашу следующую команду.

`ga` lets us _**g**oto_ the last _**a**ccessed_ file. That is, consider this chain of actions:
`ga` позволяет нам получить доступ к последнему обработанному файлу.
То есть рассмотрим эту цепочку действий:

- Открыть файл `main.rs`
- Открыть файл `lib.rs`, this is our current buffer.
- Pressing `ga` откроет буфер, соответствующий `main.rs`
- Повторное нажатие кнопки "ga" приведет к открытию the `lib.rs` buffer.
- Повторное нажатие кнопки "ga" приведет к открытию `main.rs` buffer.
- Повторное нажатие кнопки "ga" приведет к открытию `lib.rs` buffer.
- PПовторное нажатие кнопки "ga" приведет к открытию `main.rs` buffer.

Если вам понравился перевод, можете пожертвовать в фонд форума,
или узнать реквизиты для банковского перевода через опубликованные контакты.

Подпись автора

Подпись: С уважением, Максим.
мой jabber id : maksim.nk@jabber.ru ;

0


Вы здесь » Портал » helix редактор. Руководство по русски » 06-helix[Русский]-Учебник.Буфера