Tôi có thể tắt tiếp tục nhận xét cho dòng tiếp theo trong Vim không?


65

Trong Vim, nếu tôi đang gõ một bình luận trong một tệp mã và tôi nhấn Enter, nó cũng tự động làm cho dòng mới một bình luận.

Chẳng hạn, trong tệp Ruby:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Nói chung, đây là những gì tôi muốn, nhưng không phải luôn luôn. Làm cách nào để tạm thời tắt hành vi tự động nhận xét này?


Tạm thời, bạn có muốn một lệnh aa thực hiện một lần duy nhất hoặc đặt một số tùy chọn sẽ tồn tại trong một vài lệnh cho đến khi bạn bật lại? Trang web chéo có thể trùng lặp: stackoverflow.com/questions/4896003/ Từ
Ciro Santilli 改造 心 心

Câu trả lời:


86

Tôi nghĩ bạn đang tìm kiếm

:set formatoptions-=cro

Từ :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.
...

13
Cảm ơn bạn rất nhiều! Hành vi này đã làm phiền tôi-- Tôi đến từ unix vi sang Linux vim. Đối với nhân viên của Google: Để sử dụng vĩnh viễn , hãy xem stackoverflow.com/questions/6076592/ và nhập dòng này vào / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15 23/07/14

Không giúp được gì; gõ /**<ESC>ovẫn thêm một ngôi sao trên dòng tiếp theo.
Qix

Không hoạt động. z
felwithe

8

Tạm thời cài đặt tùy chọn 'dán' có thể làm những gì bạn muốn, nhưng nó cũng vô hiệu hóa rất nhiều tính năng Vim khác:

Sử dụng :set pasteđể bật và :set nopastetắt. Ngoài ra, bạn có thể sử dụng :set paste!để chuyển đổi nó.

Xem thêm:

:help 'paste'
:help 'pastetoggle'

(Những lệnh này được gõ bằng dấu ngoặc đơn.)


4
:set pasteđể bật và :set nopastetắt nó
Người dùng

2
cách khác, bạn có thể sử dụng :set paste!để chuyển đổi TRUE và FALSE
Felipe Alvarez

3

Tôi nhập dòng mới không định dạng với <CR>.

Khi tôi muốn tiếp tục gõ dòng tiếp theo trong khối nhận xét, tôi chỉ sử dụng Ophím như bình thường.

Thử đi:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>

1
Bạn có ý nghĩa <CR>gì? Một chìa khóa cụ thể?
Peter Mortensen

1
CR là viết tắt của vận chuyển trở lại. Trên các máy tính tôi đã sử dụng, nó đã được ánh xạ tới phím Enter.
Sebastian Jylanki

0

Tôi đã kết thúc với điều này:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Nó nối thêm một dòng mới, xóa mọi thứ đã được chèn vào đó và để con trỏ ở chế độ chèn trong cột thụt vào mà không làm rối các tùy chọn định dạng.


0

Câu trả lời này áp dụng cho Debian và một số dẫn xuất của nó.

Trên bản phân phối Debian Vim mặc định là không hợp lý. Chúng được đặt /usr/share/vim/vim80/defaults.vimvà áp dụng sau khi (!) /etc/vim/vimrcĐược chạy. Cách duy nhất để nói với Vim không sử dụng mặc định của nó là đảm bảo ~/.vimrctồn tại ngay cả khi nó trống. Vim khi khởi động cố gắng đọc từ .vimrc, nhưng nếu không tìm thấy tệp, nó sẽ áp dụng các mặc định mang lại nhiều hành vi không mong muốn, ví dụ như tích hợp chuột, quirks sao chép, tự động nhận xét, v.v.

Trên Debian bạn có thể sửa TẤT CẢ điều đó bằng cách chạy đơn giản touch ~/.vimrc

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.