Làm thế nào để nhảy vào bộ đệm từ ls?


7

Có cách nào để nhảy đến một bộ đệm bằng cách nhập số bộ đệm ngay từ đó :lskhông?

Ý tôi là, tại sao lệnh này mong tôi Press ENTER or type command to continue, nếu nhấn chẳng hạn 2, sẽ không làm gì cả?

Rõ ràng tôi sẽ không có bất kỳ plugin nào được cài đặt, ít nhất là một đoạn script nhỏ .vimrc.

Cảm ơn.

Câu trả lời:


10

Không thay đổi bất cứ điều gì cách nhanh nhất từ ​​dấu nhắc đó có lẽ là nhấn :b+ number + Enter. Nhưng như một chút về lối tắt ở đây, những gì tôi (và rất nhiều người khác) sử dụng sẽ đưa tôi đến đó từ chế độ Bình thường:

:nnoremap <leader>ls :ls<cr>:b<space>

Bạn có thể thay thế <leader>lsbằng bất kỳ tổ hợp phím chế độ Bình thường không sử dụng. Sau khi nhấn các phím, bạn sẽ thấy danh sách bộ đệm và bạn có thể nhập số + Entermà không phải xử lý Press ENTER...lời nhắc đó .

Cập nhật: OP muốn ghi đè :lshoàn toàn. Điều đó có thể được thực hiện với

:cnoremap ls ls<cr>:b<space>

nhưng điều này không được khuyến khích vì ánh xạ sẽ xảy ra ở bất cứ đâu "ls" được gõ trong lệnh hoặc cụm từ tìm kiếm! (Nhờ Peter Rincker cho các cảnh báo .) Trong khi bạn có thể khắc phục điều này bằng cách gõ Ctrl+ Vtrước khi gõ "ls" bất cứ nơi nào (ví dụ như để tìm kiếm "đồi" bạn phải làm /hil^Vls) đó là hầu như không thuận tiện. Tốt hơn là chọn một tổ hợp phím không có khả năng xảy ra trong các lệnh hoặc cụm từ tìm kiếm. Trong Vim giúp họ có một ví dụ với "_ls" như vậy :cnoremap _ls ....


Giải pháp tốt nghĩ. Nhưng là nó có thể quấn mẹ đẻ :lstới :ls<cr>:b<space>(từ ví dụ của bạn). Tôi có nghĩa là về ghi đè hơn là nối thêm chức năng mới. Cảm ơn
kAldown

Chắc chắn ... xem câu trả lời cập nhật của tôi.
Lớp B

Hãy cẩn thận với cmapvì chúng có thể mở rộng trong các "chế độ" dòng lệnh khác như tìm kiếm , /.
Peter Rincker

@PeterRincker bạn đã đúng, bây giờ tôi không thể tìm kiếm :find utils, vì nó chứa ls: D
kAldown 14/12/17

1
Vim giúp gợi ý nhập Ctrl-Vtrước khi bạn nhập bất kỳ ký tự ánh xạ c nào :find uti^Vls. Vẫn còn một nỗi đau nhưng tôi chưa thấy cách tiếp cận nào tốt hơn. Có lẽ bạn có thể lập bản đồ thay thế :lsxhoặc :lsqvà quen với việc sử dụng thay vì :ls. ("lsx" và "lsq" dường như không xuất hiện trong các lệnh hoặc tìm kiếm trong đời thực.)
Lớp B

1

Bạn có thể có được một quy trình công việc gần với những gì bạn muốn mà không cần cấu hình vim.

Bạn có thể chuyển đến bộ đệm thứ n bằng cách sử dụng <C-^>( ctrl+ 6).

Nếu bạn nhập một chữ số trong khi xem đầu ra của ls, thì chữ số đó được lưu trữ và có thể được chuyển sang lệnh tiếp theo.

Để tạo ảnh chụp màn hình vim giả, tôi đã tăng kích thước phông chữ để tôi chỉ có thể thấy một vài dòng và đặt các bảng liệt kê sau.

execute("set listchars=eol:\xc2\xac,tab:>\\ ,trail:\xe2\x81\x9b,extends:>,precedes:<,space:\\ ") 

Vì vậy, nếu bạn làm

$ mkdir -p /tmp/vim-example
$ cd /tmp/vim-example
$ vim ./a ./b

Sau đó, màn hình của bạn sẽ trông như thế này:

¬                                 
~                                 
~                                 
~                                 
~                                 
~                                 
./a              0,0-1         All
"./a" [New File] 

Bạn có thể nhìn vào các tập tin bằng cách nhấn :ls<cr>.

:ls                               
  1 %a   "./a"                    
      line 1                      
  2      "./b"                    
      line 0                      
Press ENTER or type command to con
tinue  

Từ đó, nếu bạn gõ 2và sau đó <C-^>bạn sẽ được đưa đến bộ đệm tiếp theo.

¬                                 
~                                 
~                                 
~                                 
~                                 
~                                 
./b              0,0-1         All
"./b" [New File]  
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.