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.