Як ви використовуєте функцію швидкого виправлення vim?


125

Я досить новий користувач Vim, і я виявив, що його крива навчання досить крута (принаймні для мене). Щойно я встановив цей скрипт vim для перевірки помилок JavaScriptLint, який показує помилки у вікні швидкого виправлення vim, коли я зберігаю буфер.

Однак я не знаю, що робити далі .. Як я "прокручую" всі помилки? Як закрити вікно швидкого виправлення? Як змусити його перевірити помилки після внесення змін до свого коду?

Я переглянув документи швидкого виправлення vim, але кількість команд величезна, і я не можу знайти те, що хочу. Будь-яка допомога буде вдячна.

Побічне запитання: чи є можливість перевірити javascriptlint на наявність js-помилок на код, що знаходиться у файлі .html?

Дякую!

Відповіді:


148

Як ви вже сказали, існує багато команд для швидкого виправлення, але я схильний знаходити, що використовую лише невелику підмножину з них:

:copen " Open the quickfix window
:ccl   " Close it
:cw    " Open it if there are "errors", close it otherwise (some people prefer this)
:cn    " Go to the next error in the window
:cp    " Go to the previous error in the window
:cnf   " Go to the first error in the next file
:.cc   " Go to error under cursor (if cursor is in quickfix window)

Я схильний використовувати це з :makeі :vimgrepтому не можу коментувати перевірку Jaint lint, але це повинно дати вам щось для початку.

Щодо загального використання JavascriptLint, я не програміст javascript, але схоже, що сценарій відкриває функцію під назвою "JavascriptLint", тому, якщо ви хочете викликати її вручну, ви можете використовувати :call JavascriptLint(). Однак він працює на дисковій копії файлу, тому його потрібно буде зберегти спочатку. Якщо (і лише якщо) командний рядок jslпрацює на html-файлах, ви повинні мати можливість використовувати :call JavascriptLint()у HTML-файлі для перевірки внутрішнього JavaScript. Ви також можете зробити:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

автоматизувати його. Якщо jslне підтримує html-файли, то (якщо не виправити додаток або попросити автора змінити його), це, ймовірно, втрачена причина ...


Дякую, ці команди - це гарний початок, мені просто доведеться трохи пограти і звикнути, як це працює. Якщо я використовую: cn, щоб перейти до помилки у вікні qf, чи можу я перейти до вікна зі своїм кодом, не виходячи з вікна qf? Чи може вона перейти до лінії, яка має помилку? І ваша пропозиція використовувати: call працює, однак випливає <script src> посилання, яке не є тим, що я хочу.
hora

@hora: :cnне слід закривати вікно qf, але воно перейде до вікна, що містить помилку: це ви маєте на увазі під «стрибком»? Ви можете швидко переключитися назад з Ctrl-W pабо :wincmd p, щоб ви могли зробити :command! CN :cn | wincmd p<CR>щось подібне (не перевірено). Це повинно дати вам :CNкоманду, яка переходить до наступної помилки, не вимикаючись із вікна швидкого виправлення. Крім того, ви можете зробити щось на кшталт :au BufWinEnter quickfix nmap <buffer> <Enter> :.cc | wincmd p<CR>(знову неперевірене) та скористатися клавішею Enter, щоб вибрати помилку, не вимикаючись із вікна швидкого виправлення.
DrAl

1
Для початківця "Ви також можете зробити:" деякий код ", щоб автоматизувати це" не означає багато. Це означає, що показаний рядок коду повинен бути розміщений у ~ / .vimrc (_VIMRC у Windows AFAIK), і після наступного запуску VIM кожного разу, коли файл буде збережено, ця команда буде викликана. Правильно?
Беров

63

Найпростіший спосіб для переміщення по списку QuickFix (або список розташування, з цього питання) є плагін .unimpaired

Після того , як вікно QuickFix заповнюється, [qі ]qйти вперед і назад (відповідно) в списку QuickFix. [Qі ]Qперейдіть до початку та кінця (що особливо зручно, якщо у вас є лише один елемент у списку; це змушує vim скаржитися на [qта ]q). Отже, робочий процес такий:

  1. Виконайте те, що команда заповнює список швидких виправлень
  2. Введіть, [Qщоб перейти до першого пункту
  3. Прокрутіть наступні елементи (якщо такі є) за допомогою [qта]q

Якщо ви використовуєте Syntastic, ви отримаєте список місцеположень замість списку швидких виправлень. Нема проблем; просто використовувати [L, ]L, [lі ]lтаким же чином.

unimpairedтакож є безліч інших зручних відображень - [eі ]e"бульбашкові" лінії вгору і вниз, [<Space>і ]<Space>вставляйте порожні рядки вгору і внизу, і т. д. Я був здивований, як ніхто тут раніше не згадував про це; це, мабуть, тому, що воно існувало до січня 2010 року, хоча питання було задано у 2009 році.


27

Помістіть у файл .vimrc наступні два рядки:

map <C-j> :cn<CR>
map <C-k> :cp<CR>

Тепер ви можете переходити через помилки, використовуючи ctrl-j та ctrl-k, що імітує стандартні команди руху вниз та вгору j та k.


1
<c-j>колись (залежить від терміналу ?!) помилково або взагалі не працює, оскільки це означає те саме, що <NL> // найпростіший ist, використовувати <c-n>і <c-p>замість цього // інакше: stackoverflow.com/questions/8304421/…
eli

Я вирішив використовувати F8 і F9, як це: noremap <F7> :cprevious<CR>і noremap <F8> :cnext<CR>в.vimrc
Flimm

Я вже використовую <C-j>та <C-k>переходжу між розділами vim та панелями tmux за допомогою навігатора vim tmux . Комбінації <C-M-j>і <C-M-k>може бути альтернативою.
Пол Рудьє

24

Ви також можете скористатися :cc 2(або будь-яким іншим числом), щоб перейти до другої помилки у вікні швидкого виправлення. Навігація за допомогою :cn, :cc 4тощо, поставить курсор на відповідну лінію.


8

Передовий практики спосіб інтеграції JavaScript синтаксису перевірки використовує Syntastic плагін Vim , який з допомогою Vim в розташування-лист (який паралельний QuickFix ) вікна.

Я написав відповіді на це питання , і це питання пояснити , як зробити це, плюс також , як отримати вихідний код перегляду / тег-лист для Vim з допомогою спільноти керованої jshint.com (що набагато краще , ніж JSLint ІМО) і Лікар Mozilla's DoctorJS (раніше jsctags ).


8

Можливо, цей варіант не існував, коли це питання було написано (або, можливо, я бентежу себе, тому що в моєму є щось, .vimrcщо робить це), але коли я отримую Quickfix List, я просто переходжу по ньому, jа kпотім натискаю <CR>(тобто клавіша Enter) щоб перейти до цього місця у файлі.

Потім, щоб повернутися до Quickfix Listтипу I Ctrl+ + W jдля "переміщення у вікно", і я повернувся.

Нарешті, коли я закінчу, я просто набираю текст :q, як би я закрив будь-яке нормальне вікно.


Це те, що я хотів би зробити, але я отримую "Не вдається внести зміни," зміни можна "вимкнено".
rtf

1
Напевно, ви перевантажили свій клавішу Enter. У мене було, наприклад nmap <CR> o<Esc>, щоб я міг додавати нові рядки у звичайному режимі.
Тааві Ільвес

6

вікном швидкого виправлення керується здебільшого, як і будь-яке інше віно-вім: j вниз по лінії, k вгору по рядку,: cn для переходу до наступної помилки / попередження тощо.

експериментуйте!


1
+1 за експерименти, це я майже все, що я навчився.
hora

4

На додаток до відмінної відповіді @DrAl про те, як відкрити та закрити швидке вікно та переходити між записами, я створив зображення для показу деяких інших команд швидкого виправлення навігації.

Кожна група з 3-х файлів нижче представляє набір результатів швидкого виправлення, наприклад, з програми vimgrep. шибше і холодніше - це пройти історичні набори результатів. введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.