Chèn một dòng trống trong vim?


25

Tôi thường thấy rằng tôi có nhu cầu chèn một dòng trống bên dưới hoặc bên trên dòng hiện tại khi chỉnh sửa trong vim. oOsẽ làm điều này, nhưng sau đó họ chuyển sang chế độ chèn, điều này gây khó chịu. Có bất kỳ lệnh tích hợp nào để làm điều này sẽ vẫn ở chế độ bình thường không?

Câu trả lời:


10

Cả plugin chưa từng thấy của Tim Pope cũng như plugin LineJuggler của riêng tôi đều cung cấp [<Space>]<Space>ánh xạ để thêm [count]các dòng trống bên trên / bên dưới dòng hiện tại.

Về cơ bản, nó nắm rõ điều này:

nnoremap <silent> ]<Space> :<C-u>put =repeat(nr2char(10),v:count)<Bar>execute "'[-1"<CR>
nnoremap <silent> [<Space> :<C-u>put!=repeat(nr2char(10),v:count)<Bar>execute "']+1"<CR>

Bây giờ tôi sử dụng nó, vì vậy tôi đã đánh dấu đây là giải pháp "chính xác"; nhưng tất cả các câu trả lời ở đây là tuyệt vời
Andrew Ferrier

Mẹo tuyệt vời, mặc dù tôi thích bản đồ <Space>o<Space>Othay vào đó.
simlev

26

Tôi đã sử dụng những

map <Enter> o<ESC>
map <S-Enter> O<ESC>

trong tôi .vimrcnhiều năm.

Nhấn Enter để chèn một dòng trống bên dưới hiện tại, Shift + Enter để chèn nó ở trên.


Tôi đánh dấu điều này đúng vì đây là giải pháp đơn giản nhất, mặc dù tất cả những câu trả lời này đều tốt.
Andrew Ferrier

Quá dễ! Đây phải là câu trả lời được chấp nhận!
Sheharyar

Nếu bạn không muốn con trỏ di chuyển khi bạn nhấn Enter, hãy đặt kở cuối bản đồ thứ nhất và jở cuối bản đồ thứ hai.
zondo

1
Lưu ý rằng ánh xạ Shift-Enter chỉ hoạt động với phiên bản GUI của vim, không phải phiên bản đầu cuối. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Một cách khác để chèn các dòng trên hoặc dưới:

nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>

Lưu ý rằng giải pháp từ romainl và Mr Shunz sẽ di chuyển con trỏ đến dòng vừa được chèn, trong khi đó và giải pháp từ Ingo Karkat sẽ giữ con trỏ ở cùng một vị trí.


1

Không, không có lệnh tích hợp cho điều đó.

Những ánh xạ này làm những gì bạn muốn:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
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.