Làm thế nào để ánh xạ lại gg để g?


8

Tôi không sử dụng bất kỳ g combinationsngoại trừ gg, trong chế độ bình thường. Làm thế nào tôi có thể làm cho nó để nhấn gmột lần là đủ?

nnoremap g gglàm cho nó chờ trong 3 giây hoặc lâu hơn để tiếp tục lệnh. Hủy ánh xạ gtrước cũng không hoạt động, bởi vì tôi không thể ánh xạ tới ggnếu tôi hủy ánh xạ g. Tôi có nên hủy sơ đồ mọi kết hợp không gg?


7
Chỉ vì bạn không sử dụng bất kỳ gánh xạ nào bây giờ, không có nghĩa là bạn sẽ không sử dụng bất kỳ ánh xạ nào trong tương lai. Có một số khá tiện dụng trong đó. ví dụ như gE, g_, gt, gT, g,, g;, gu, gU, gn, và tôi yêu thích cá nhân gf. Xem :h gcho một danh sách của tất cả các ánh xạ g.
Peter Rincker 2/12/2015

Ồ vâng, gf là tuyệt vời. Nhưng tôi không cần nó thường xuyên ngay bây giờ. Có lẽ tôi sẽ chuyển nó sang một phím nóng riêng khi tôi cần. (Tên của chúng tôi rất giống mô phỏng, tôi tự hỏi nếu tôi nhìn vào tên của bạn khi tôi chọn tên của mình).
Peret Finctor

Và tôi muốn vim và ít hành xử như vậy, nếu có thể. Ít sử dụng một g.
Peret Finctor

3
Tôi có thể sử dụng gvkhoảng 90 giây một lần hoặc lâu hơn
the_velour_fog 2/12/2015

1
Ngoài ra còn có một số plugin có ánh xạ mặc định bắt đầu bằng g, chẳng hạn như gctrong phần bình luận . Bạn cũng nên cân nhắc rằng bạn sẽ chạy ra khỏi các phím nếu bạn tiếp tục sử dụng Vim trong một thời gian dài, và phải mất một thời gian / công sức để đào tạo bộ nhớ cơ bắp của bạn sau khi bạn đã quen với một ánh xạ nhất định.
mMontu

Câu trả lời:


22

Giả sử bạn có phiên bản mới hơn của Vim (7.3.1261+), bạn có thể sử dụng <nowait>

nnoremap <nowait> g gg

Mặc dù, tôi không thể nhấn mạnh tính hữu ích của một số gánh xạ. Dưới đây là danh sách ngắn các gánh xạ hữu ích :

  • gE - kết thúc ngược của chuyển động từ
  • g_ - đến ký tự không trống cuối cùng của một dòng
  • gt& gT- điều hướng tab
  • g,& g;- qua lại thông qua danh sách thay đổi
  • gu& gU- thay đổi trường hợp
  • gn - trực quan chọn mẫu hiện tại
  • gv - chọn lại lựa chọn hình ảnh trước đó
  • gi - bắt đầu chế độ chèn ở cùng vị trí Chế độ chèn được dừng lần cuối
  • gf - đi đến tập tin dưới con trỏ (Sở thích cá nhân của tôi)

Xem :h gcho một danh sách của tất cả các gánh xạ.

Cá nhân tôi chỉ học cách sử dụng ggvì đó là một thói quen tốt và ít được biết đến là một trình giả lập Vi / Vim tốt.

Để được trợ giúp thêm xem:

:h g
:h :map-nowait

9
gicũng khá tuyệt vời (nhập chế độ chèn nơi bạn đã rời khỏi nó trước đó). Tôi sử dụng nó mọi lúc khi tôi đang gõ một dòng mã và tôi phải đi kiểm tra một cái gì đó trong tệp.
Doorknob

1
Vâng. Đây cũng giống như những người lập bản đồ wđến :w<CR>qđể :qall<CR>vì đó là "nhanh hơn." Bạn đang tự cướp đi những lợi ích của vim.
wchargein

@WChargin oh, vậy tôi không phải là người đầu tiên. Bạn có biết thêm về loại hình này, bạn có thể chuyển hướng tôi đến những người đó không?
Peret Finctor

2
@PeretFinctor Không chắc bạn có đùa hay không, quan điểm của tôi là những loại hình này là những ý tưởng rất tồi. Những người làm điều này chỉ đang cố gắng sử dụng vim như một trình soạn thảo chạy; w, qgtất cả đều cung cấp chức năng cực kỳ rộng rãi mà bạn nên sử dụng thường xuyên trong khi chỉnh sửa, nhưng bạn đang kìm nén để loại bỏ các phân số của giây khi bạn lưu. Tôi không biết về bạn, nhưng tôi tiết kiệm ít thường xuyên hơn là tôi tiến về phía trước một từ!
wchargein

1
@PeretFinctor: Tại sao bạn không sử dụng w / W và b / B cho từ chuyển tiếp và từ lùi, cách Vim cung cấp ngoài luồng? - Bạn thấy mô hình ở đây? Bạn cố gắng vật lộn với Vim. Di chuyển với nó, sử dụng những thứ nó cung cấp khi chúng được cung cấp. Cách đó sẽ dễ dàng hơn và có lợi hơn cho quy trình làm việc của bạn về lâu dài.
DevSolar

7

Chỉ cần bấm chuông, nếu bạn thực sự muốn một khóa duy nhất - bạn vẫn có thể sử dụng ... một khóa khác (tức là một khóa mà bạn không cần nhiều như vậy)! Bằng cách này, bạn có thể để lại gtiền tố hữu ích .

Ví dụ: bạn có thể "quá tải" 0để chuyển đổi giữa 0^chức năng, khi được nhấn liên tục và ^thay vào đó là miễn phí cho việc sử dụng của bạn (vì đó là một nhân vật đi lên trực quan ).

Tôi chắc chắn rằng điều này không hoàn hảo, nhưng đây là một bằng chứng nhanh chóng về khái niệm:

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

Ở trên vẫn cho phép sử dụng 0 làm chuyển động, và cũng từ chế độ trực quan. Trên một dòng thụt lề, y0bây giờ sẽ sao chép từ vị trí con trỏ sang ký tự không trống đầu tiên. Thay vào đó, nếu bạn muốn sao chép vào cột bắt đầu, bạn sẽ phải trực quan:v00y

Bây giờ bạn cũng có thể sử dụng 13^để đi đến dòng 13.


1
Đó thực sự là một ý tưởng tốt, cảm ơn bạn!
Peret Finctor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.