Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.
Ограничения: максимум вложений в сообщении — 3 (3 осталось), максимальный размер всех файлов — 300 КБ, максимальный размер одного файла — 100 КБ
Снимите пометку с вложений, которые необходимо удалить
Перетащите файлы сюда или используйте кнопку для добавления файлов
Вложения и другие параметры
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр

Сообщения в этой теме

Автор Квас
 - апреля 30, 2012, 00:39
vim + python3

Предположим, имеется юникодный файл с кириллическим текстом. Поместим курсор на какую-нибудь достаточно длинную строку (дюжины символов хватит).

Фокус:

:py3 import vim
:py3 l = vim.current.line
:py3 vim.current.line = l

Внезапно половина строчки пропадает. Подозреваю, что из-за многобайтности. Но как избежать такого нехорошего эффекта?

(Если кто-то попробует повторить, и не будет получаться, то нужно проверить с помощью version, есть ли python3; работает с той версией питона, с которой вим скомпилирован — у меня 3.1.)
Автор Квас
 - апреля 29, 2012, 11:58
NERD_tree — это мегакруто!
Автор Дм
 - февраля 8, 2012, 12:22
Цитата: Квас от февраля  8, 2012, 11:13
С помощью AHK сделал себе модальным Far. Передвигаюсь теперь по hjkl. :green:
Под Линукс был какой-то файлменеджер с интерфейсом как у vim'а. Но когда я проверял, в нём не было поддержки UTF-8.
Автор Квас
 - февраля 8, 2012, 11:37
Цитата: Д3 от февраля  5, 2012, 12:51
ЦитироватьВо-вторых, структура абзаца никак не связана со строками, поэтому команды типа «удалить строку» бесполезны, ограниченно работает поиск символа в (команда f) и пр.
Может, стоит использовать { и } для навигации по абзацам? :-\

Это конечно.

Речь о навигации внутри абзаца: разрывы строк препятствуют, например, командам f и F.
Автор Квас
 - февраля 8, 2012, 11:13
Спасибо большое за советы!

Цитата: Д3 от февраля  5, 2012, 12:51
P.S. А я отошёл от вима и доволен. ëat:

У меня, напротив, рвение неофита. ;D

С помощью AHK сделал себе модальным Far. Передвигаюсь теперь по hjkl. :green:
Автор Д3
 - февраля 5, 2012, 12:51
У меня нет под рукой вима сейчас (сижу в Windows), так что проверяйте, работают ли мои советы, сами. :green:

Цитата: Квас от февраля  5, 2012, 12:03
Но неудобства у автоматического разбиения более серьёзные. Во-первых, при редактировании строки получаются самой разной длины, и надо не забывать разбивать их снова.
Установите себе :set fo=a2w, пусть vim сам и разбивает. :donno: Полный список возможных опций (кроме a2w) см. в fo-table.

ЦитироватьВо-вторых, структура абзаца никак не связана со строками, поэтому команды типа «удалить строку» бесполезны, ограниченно работает поиск символа в (команда f) и пр.
Может, стоит использовать { и } для навигации по абзацам? :-\

Цитата: Квас от февраля  5, 2012, 12:03Видимо, лучше вернуться к старым привычкам и не разбивать на строки. Что тогда с навигацией? Получается, что команды j и h перемещают между абзацами, а внутри абзаца можно двигаться по предложениям, по словам или до символа. В принципе, это логично, только скобки нажимать не так удобно, как клавиши основного ряда.
Для перехода по строкам можно использовать gj и gk. Можно даже сделать команды j и k основными:
noremap  <buffer> <silent> k gk
noremap  <buffer> <silent> j gj

Взято отсюда: http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping, по ссылке больше всего.

P.S. А я отошёл от вима и доволен. ëat:
Автор Квас
 - февраля 5, 2012, 12:03
А что по поводу стратегии работы в виме с текстом? Конкретно, с разбиением на строки.

С одной стороны, автоматически разбивать на строки довольно удобно (например, при организации обратного поиска).

Но неудобства у автоматического разбиения более серьёзные. Во-первых, при редактировании строки получаются самой разной длины, и надо не забывать разбивать их снова. Во-вторых, структура абзаца никак не связана со строками, поэтому команды типа «удалить строку» бесполезны, ограниченно работает поиск символа в (команда f) и пр.

Видимо, лучше вернуться к старым привычкам и не разбивать на строки. Что тогда с навигацией? Получается, что команды j и h перемещают между абзацами, а внутри абзаца можно двигаться по предложениям, по словам или до символа. В принципе, это логично, только скобки нажимать не так удобно, как клавиши основного ряда.
Автор Квас
 - января 4, 2012, 20:13
абырвалг, спасибо! Ответ на главную мою непонятность в следующем:
Цитата: абырвалг от января  4, 2012, 19:45
Программа на Python'е должна читать стандартный канал ввода (sys.stdin) и писать данные в стандартный вывод (sys.stdout). Работать с ними можно, как с обычными файлами.
А как к vim-у прикрутить — надо поэкспериментировать.
Автор абырвалг
 - января 4, 2012, 19:45
Цитата: Квас от января  4, 2012, 18:31
Спрошу такую вещь.

Прочитал про filtering: блок текста передаётся внешней программе и замещается аутпутом этой программы. Интересно, можно ли это сделать, например, для скрипта на питоне? И каким образом этот скрипт должен возвращать аутпут?
Программа на Python'е должна читать стандартный канал ввода (sys.stdin) и писать данные в стандартный вывод (sys.stdout). Работать с ними можно, как с обычными файлами.

Тащемто print("hello") в sys.stdout и пишет.

Вот пример программы, которая к каждой строке добавляет смайлик:
from sys import stdin
for s in stdin:
    print(s.rstrip() + " :)")


Бо́льшая проблема—как это запустить в vim'е. В Linux-то всё просто:

В Windows, скорее всего, придется в vim'е вызывать его так:
:%!C:\Python3\pyton.exe нашФайл
Хотя я и не проверял.

Из того, что приходит в голову: можно занести путь к Python'у в переменную окружения PATH. Можно сделать bat-файл, и вызывать bat-файл (хотя я не уверен, что можно).
Автор Квас
 - января 4, 2012, 18:34
Цитата: Квас от января  2, 2012, 15:28
autocmd InsertEnter *.* :call writefile(["1"], "c:\\blahblahblah.txt")
autocmd InsertLeave *.* writefile(["1"], "c:\\blahblahblah.txt")

Разумеется, во втором случае 0 вместо 1.