Quay trở lại từ lệnh tự động hoàn thành


7

Nếu tôi gõ :e foo/**/foo*.jsvà nhấn tab thì vim sẽ thay thế * s bằng tất cả các đề xuất có thể có trong filepath. Điều gì xảy ra nếu tôi nhận ra rằng tôi không đủ cụ thể (có quá nhiều kết quả trong tự động hoàn thành) và tôi muốn quay lại từ các đề xuất tự động hoàn thành để:e foo/**/foo*.js

Cài đặt wildmenu của tôi là:

set wildmenu
set wildmode=longest:full,full,full
set nowildignorecase

Có chìa khóa nào cho phép tôi lấy lại những gì tôi có trước khi nhấn tab không?

Câu trả lời:



1

Sau khi đặt wildmode = full, shift-tab đưa tôi trở lại regex ban đầu. Tài liệu wildmode cho đầy đủ là

"đầy đủ" Hoàn thành trận đấu đầy đủ tiếp theo. Sau trận đấu cuối cùng, chuỗi ban đầu được sử dụng và sau đó là trận đấu đầu tiên một lần nữa.

Ban đầu, wildmode của tôi là wildmode = dài nhất: đầy đủ, đầy đủ, đầy đủ. Để quay lại regex ban đầu, tôi đã phải tab, tab, sau đó thay đổi tab. Lý do tôi phải làm hai tab là vì tab đầu tiên khiến tôi mất nhiều thời gian nhất: đầy đủ.

"Dài nhất: đầy đủ" Thích "dài nhất", nhưng cũng bắt đầu 'wildmenu' nếu được bật.

Dựa trên tài liệu này có vẻ như dài nhất: đầy đủ không có tùy chọn để quay lại regex ban đầu. Lần thứ hai tôi đánh dấu, nó đưa tôi đến đầy đủ, nó sẽ sử dụng chuỗi gốc ở cuối wildmenu. Đây là lý do tại sao một tab shift sẽ đưa tôi trở lại regex ban đầu sau hai tab.


1

Tôi chỉ vấp phải điều này một mình và lập luận để thay đổi (theo ý kiến ​​của tôi) mặc định sai cho cài đặt 'wildmode'.

Dù sao, trong khi thảo luận về điều này, tôi đã nói, điều đó CtrlPcó thể được nhấn để cho phép bạn trở về từ nơi bạn đã hoàn thành. Điều này cho phép quay trở lại và thay đổi những gì sẽ được hoàn thành. Một cách khác là đánh ShiftTab, tuy nhiên có thể không hoạt động trong thiết bị đầu cuối.


Cảm ơn bạn. Tôi đã không nhận ra rằng Shift Tab sẽ trở lại từ nơi tôi đã hoàn thành. Nó không chính xác đưa tôi trở lại, nhưng nếu tôi foo / ** / foo * thì tab, shift-tab, tab. Nó đưa tôi trở lại foo / ** / foo *. Bạn có thể giải thích tại sao nó hoạt động theo cách này? Tôi giả sử nó có liên quan đến việc có thời gian dài nhất, sau đó đầy đủ trong cài đặt wildmode của tôi.
user2453676

xin lỗi, tôi không hiểu vấn đề của bạn ở đây
Christian Brabandt

@ChristianBrabandt Tôi nghĩ <cp> hoạt động như <s-tab>, vì vậy nếu bạn đã thực hiện nhiều hơn một <tab> thì <cp> chính xác sẽ không cho phép bạn lấy lại những gì bạn có. Bạn phải tiếp tục nhấn <cp> để quay lại. Tôi nghĩ rằng bạn không phải là câu trả lời đúng ở đây.
klaus

@ user2453676 hoàn thành tab thực sự hoạt động trên một danh sách phù hợp với biểu thức chính quy ban đầu của bạn (hoặc một cái gì đó). Sau đó, bạn có thể <tab> hoặc <s-tab> thông qua tất cả các danh sách này. Vì vậy, khi bạn nhấn <tab> từ danh sách phần tử 0, bạn đi đến danh sách phần tử 1, v.v. Nếu bạn nhấn <s-tab> từ phần tử danh sách 1, bạn sẽ chọn phần tử danh sách 0 và nếu bạn nhấn lại <s-tab>, bạn sẽ liệt kê phần tử -1, về cơ bản là phần tử cuối cùng trong danh sách. Đó là lý do tại sao nó hoạt động theo cách nó làm trong câu hỏi của bạn. Dài nhất, đầy đủ trong wildmode chỉ là các cờ để hoàn thành tab theo sở thích của bạn.
klaus

@EnanAjmain đúng. Tôi không chắc tại sao bạn nói nó không đúng. <C-P><s-Tab>đưa bạn đến nơi bạn ở trước khi hoàn thành dòng lệnh. Và đó là câu hỏi
Christian Brabandt
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.