Vim HardMode - дрібне переміщення зерна


11

Нещодавно я дізнався про жорсткий режим Vim і вирішив спробувати його використовувати. Однак у мене виникають проблеми з дрібними рухами зерна.

Наприклад, скажімо, що я дуже просто хочу рухатись вгору або вниз по одній лінії. Оскільки jі kє інвалідами, я не впевнений, які кращі альтернативи для цього є.

Я зіткнувся з тією ж проблемою, коли хочу перемістити один або два символи вправо або вліво. Хтось знає, як можна було б замінити такі типи рухів?

Це плагін, який я використовую: https://github.com/wikitopian/hardmode .


Який дурний плагін! Використовуйте все, що працює.
— romainl

Я дуже погоджуюся з romainl: добре навчитися ефективно орієнтуватися у файлі, але нав'язувати собі цей плагін - не потрібний біль. Все-таки ви могли б зацікавити моєю відповіддю тут (точніше про частину про /та ?.
— statox

1
Я б із повагою не погоджувався з statox та romainl тут. Навігація безпосередньо до цілей, які ви хочете змінити, може значно покращити вашу загальну ефективність. Хоча так, це спочатку може сповільнити вас, але з часом ви зможете компенсувати втрачений час, використовуючи кращі навігації.
— Архангел33,

Насправді @ Archangel33 Я думаю, що ми поділяємо ту саму думку щодо того, що навігація точніше іншими методами, ніж hjklце добре. Я не схвалював себе самим плагіном: на мою думку, краще вивчити нові способи навігації один раз за один раз (ви не можете навчитися їх усі одночасно) та під час навчання за допомогою плагінів, які вас засмучують. необхідні.
— Коли

1
@Alex Дійсно мій коментар був лише моєю особистою думкою, я б ніколи не вважав, що у мене є єдине і універсальне рішення, тому моє останнє речення було That being said it is only my opinion: one has right to disagree. Зараз дебати потенційно нескінченні: звичайно, деякі люди отримають користь від такого роду плагінів, тоді як це лише засмутить деяких інших і завдасть шкоди їхньому навчанню. Якщо ви хочете поговорити про це, я із задоволенням обговоріть з вами у чаті, але ми не повинні
— спамувати

Відповіді:


17

Це лише декілька рухів, на які здатний vim, і це повинно вас змусити зараз.

TL; DR

  1. Використовуйте вбудовану довідкову функцію Vim navigationабо навіть кращеusr_03.txt
  2. Шукати в Google vim advanced movements
  3. Переміщення з / до слів
  4. йти сюди Всі правильні рухи

Рухи

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

Ось декілька, які дозволяють навігацію всередині рядка.

  • 0 - перейти до початку поточного рядка.
  • ^ - перейти до першого непорожнього символу рядка.
  • $ - перейти до кінця поточного рядка.
  • g_ - перейти до останнього непорожнього символу рядка.

Навігація словами може бути дуже корисною. Щоб бути більш детальним, слід орієнтуватися на слова, використовуючи:

  • e - перейти до кінця поточного слова.
  • E - перейти до кінця поточного СЛОВА.
  • b - перейти до попереднього (до) слова.
  • B - перейти до попереднього (перед) СЛОВА.
  • w - перейти до наступного слова.
  • W - перейти до наступного СЛОВА.

Слово складається з послідовності букв, цифр та підкреслень. СЛОВ складається з послідовності непорожніх символів, розділених пробілом. слова | Слова можуть також змінюватися залежно від ваших налаштувань vim.

Приклад, щоб показати різницю між словом та словом

192.168.1.1 є єдине слово.

192.168.1.1 це сім слів.

Пошукові рухи теж можуть бути надзвичайно корисними.

  • /pattern - Шукайте шаблон, який переведе вас до наступного явища pattern
    • nпереведе вас до наступного матчу patternнижче курсору.
  • ?pattern- Шукайте шаблон, який приведе вас до попереднього виникнення pattern.
    • Nпереведе вас до наступного матчу patternнад курсором.
  • * - Перейдіть до наступного появи поточного слова під курсором.
  • # - Перейдіть до попереднього виникнення поточного слова під курсором.
  • % - Перейдіть до відповідних дужок або дужок всередині коду.

Ось декілька, які ви можете зробити ще до того, як відкрити vim, з командного рядка Vim +N filenameви можете перейти до N-го рядка файла після його відкриття.

vim +10 /etc/passwd

Vim +/pattern filenameвідкриває файл у перший рядок із появою pattern. У наступному прикладі vim відкриє файл README та перейде до першого появи слова «встановити».

vim +/install README

Vim +?patten filenameвідкриває файл до останнього появи pattern. У наступному прикладі він відкриє файл README і перейде до останнього появи слова "помилка".

vim +?bug README


8

В якості альтернативи hardmode, наступний фрагмент коду дозволить вам використовувати h, j, kі , lяк зазвичай , але виробляють звуковий сигнал , щоб попередити вас , коли вони використовуються в швидкій послідовності.

function! s:BeepOnRepeat(key)
    let count1 = v:count1

    if !exists('s:last_time')
        let s:last_time    = reltime()
        let s:repeat_count = 1
    else
        " increment the repeat count if `h`, `j`, `k`, or `l` was pressed
        " within the last second, otherwise reset it
        let now = reltime()
        if str2float(reltimestr(reltime(s:last_time, now))) < 1
            let s:repeat_count += 1
        else
            let s:repeat_count = 1
        endif
        let s:last_time = now

        " produce an audible beep if a sequence of `h`, `j`, `k`, and/or `l`,
        " greater than three, was pressed (within the repeat count time limit)
        if s:repeat_count > 3
            let savebelloff    = &belloff
            let savevisualbell = &visualbell
            let &belloff    = ''
            let &visualbell = 0
            execute "normal! \<Esc>"
            let &belloff    = savebelloff
            let &visualbell = savevisualbell
        endif
    endif

    execute 'normal! ' . count1 . a:key
endfunction

nnoremap <silent> h :<C-u>call <SID>BeepOnRepeat('h')<CR>
nnoremap <silent> j :<C-u>call <SID>BeepOnRepeat('j')<CR>
nnoremap <silent> k :<C-u>call <SID>BeepOnRepeat('k')<CR>
nnoremap <silent> l :<C-u>call <SID>BeepOnRepeat('l')<CR>

Для іншого підходу до обмеження hjklвикористання див. Vim-меласа .


3

Крім того, використовуйте Середній режим, який все ще намагається навчити вас "правильним рухам", але менш суворий у цьому:

Середній режим - плагін Vim, який обмежує символічні рухи, але не вимикає їх повністю. За замовчуванням середній режим дозволить використовувати лише два послідовних руху.


1

У мене був цей самий випуск, тоді я набрав :help hardmodeЛо і ось знайшов

'g:HardMode_level' If set to 'wannabe' 
arrow keys disabled, but not   hjkl etc.                                                                                              

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

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