2013-11-30 3 views
-2

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

Мне очень жаль, потому что неофициальный английский язык, инструкции переведены машиной, надеюсь, вы сможете увидеть и понять.

Я использую платформу для окон gvim. Спасибо снова!

jinan 48 (2) [2013/10/18] указано среднее значение: цзинань (место встречи, место проведения) + пробел +48 (2) (сыграно) + space + [2013/10/18] (матч дата)

С датой матча, совпадениями Сыгранные, сопоставляют их как условие для определения сравнительного результата, таким образом, достигая квалификационных рядов по одному вместе. Примечание. Исходный файл не является регулярным, поэтому я думаю, что он должен использоваться для определения условий поиска квалифицированных, прежде чем они смогут перейти к последней строке.

До модификации

jinan 48(2) [2013/10/18] 
jinan 48(1) [2013/10/18] 
jinan 47(2) [2013/10/18] 
qindao 48(2) [2013/10/18] 
qindao 48(1) [2013/10/18] 
qindao 47(2) [2013/10/18] 
jilin 48(2) [2013/10/18] 
jilin 48(1) [2013/10/18] 
jilin 47(2) [2013/10/18] 
yantai 48(2) [2013/10/18] 
yantai 48(1) [2013/10/18] 
yantai 47(2) [2013/10/18] 
…… 

После модификации

jinan 48(2) [2013/10/18] 
qindao 48(2) [2013/10/18] 
jilin 48(2) [2013/10/18] 
yantai 48(2) [2013/10/18] 
jinan 48(1) [2013/10/18] 
qindao 48(1) [2013/10/18] 
jilin 48(1) [2013/10/18] 
yantai 48(1) [2013/10/18] 
jinan 47(2) [2013/10/18] 
qindao 47(2) [2013/10/18] 
jilin 47(2) [2013/10/18] 
yantai 47(2) [2013/10/18] 
…… 

Я хочу знать, как использовать GVIM выполнить определенные условия для достижения линии можно перемещать пут together.Thanks еще раз!

+1

Вам нужно будет объяснить, какая разница в/в на входе и выходе, какое изменение вы пытаетесь сделать? Вы пытаетесь сортировать строки по их 2-й колонке? – ffledgling

+0

Оригинальная строка не должна вносить никаких изменений, просто введите одно и то же время в одном и том же матче в разных местах по одному по ходу гонки Циндао, Цзинань, Цзинин, Яньтай - это имя места jinan 48 (2) [2013/10/18] указано среднее jinan (название места) + пробел +48 (2) (матч Race) + пробел + [2013/10/18 (время) – shixin

+0

Попробуйте упомянутый ответ и посмотрите, работает ли он. – ffledgling

ответ

2

Предполагая, что вы хотите отсортировать строки по 2-й колонке.

Вы можете использовать команду Unix sort сделать это:

sort -k 2 -r -s input_file.txt > sorted_output.txt # That's a lot of flags ... 
  • Чтобы сделать это изнутри Vim, вы можете выбрать строки, перейдя в режим
    VISUAL LINE.
  • Выберите линии, которые вы хотите отсортировать.
  • Затем нажмите : , чтобы ввести команду ex mode.
  • Тип !sort -k 2 -r -s % Infront из уже присутствующего :'<,'> так что ваш бывший буфер выглядит следующим образом:

.

:'<,'>!sort -k 2 -r -s 
  • Хит войти. Ваши строки будут заменены отсортированным входом.

Если у вас есть много строк, и вы хотите использовать это на все линии, вы можете выбрать все строки, выполнив VggG и затем запустить вышеупомянутую команду режима ex.

Как указал Зикс, % не требуется после команды !sort (и в этом случае неверно) при использовании визуального режима.

+0

Ответ не представляется возможным, я использую платформу окон gvim. – shixin

+0

Вы не указали это в своем вопросе. – ffledgling

+0

Извините, используйте свой ответ, попробовали или нет, я добавил несколько заметок в оригинале, надеюсь, вы сможете узнать больше о моих потребностях. Спасибо! – shixin

0

Вы можете использовать Vim встроенный в :sort команды:

:sort! /\S\+\s*/ 

. В этом случае регулярное выражение сортирует пропущенную часть строки, которая соответствует этому регулярному выражению (в этом случае это последовательность символов без пробелов (с хотя бы одним символом без пробелов), за которым следует последовательность символов пробела (с по крайней мере равным нулю пробельные символы)). ! отменяет заказ. По умолчанию :sort работает со всем файлом, проверьте :h :range о других параметрах.

+0

Используйте свой ответ, попробовали или нет, я добавил несколько заметок в оригинале, надеюсь, вы сможете узнать больше о моих потребностях. Спасибо! – shixin

+0

@shixin Мой ответ такой же, как @ffledgling, за исключением ключа '--stable' (' -s'). К сожалению, нет никакого способа, чтобы vim ': sort' можно было сделать стабильным. Вероятно, лучше использовать его ответ, поскольку для окон есть сортировка. – ZyX

+0

@shixin * Err: это будет то же самое, если вы удалите часть 'n'. Это сортирует так, чтобы строки с '48 (2)' были выше строк с '48 (1)', и они, в свою очередь, выше строк с '47 (2)', но это предполагает, что все числа имеют одинаковую ширину (если есть line с '5 (1)' во втором столбце, он будет показан вверху как моим (после редактирования), так и ответом @ ffledgling, пока он должен быть, вероятно, внизу). Редактирование, однако, не приведет к стабилизации сортировки. – ZyX

Смежные вопросы