Xem ngắt dòng và trả về vận chuyển trong trình chỉnh sửa


179

Có ai biết một trình soạn thảo văn bản trên Linux cho phép tôi xem ngắt dòng và trả về vận chuyển không? Vim có hỗ trợ tính năng này không?


1
LƯU Ý: đôi khi dòng mới ($) và lợi nhuận vận chuyển (^ M) bị ẩn trong NHIỀU phối màu, và trong khi sử dụng putty để ssh.
Vanessa Sanchez

1
OP Tôi nghĩ bạn nên xem xét lại câu trả lời đã chọn. như câu trả lời được chọn không hoạt động. nhưng câu trả lời của CaptSaltyJack hoạt động tốt.
JavaSheriff

OP Điều gì sẽ hiển thị CẢ HAI là giải pháp của @arno. Tôi cần phải xem CẢ, vì tôi có một tệp ngẫu nhiên bằng cách sử dụng cả 3 định dạng tệp ... Và giải pháp của arno hoạt động
Wayne Walker

Câu trả lời:


138

:set listtrong Vim sẽ hiển thị khoảng trắng. Cuối dòng hiển thị là ' $' và lợi nhuận vận chuyển thường hiển thị là ' ^M'.


2
Câu hỏi tương tự ở đây: superuser.com/questions/97692/ khăn
Alec Jacobson

253
Không chính xác, :set listsẽ KHÔNG hiển thị các ^Mký tự (CR). Cung cấp -btùy chọn cho vi / vim sẽ hoạt động. Hoặc, khi vim được tải, hãy nhập::e ++ff=unix
CaptSaltyJack

15
FYI, để tắt chế độ "thiết lập danh sách", hãy sử dụng:set nolist
Tomofumi

@Tomofumi một chỉnh sửa với sự thay đổi của bạn sẽ được hoan nghênh!
Pipo

1
Câu trả lời sai. : set list sẽ KHÔNG hiển thị ^ M ký tự (CR). Sử dụng tùy chọn -b để vi / vim sẽ hoạt động.
nanosoft

265

Không đồng ý với câu trả lời chính thức:

:set listsẽ không hiển thị ^ M ký tự (CR). Cung cấp tùy chọn -b cho vi / vim sẽ hoạt động. Hoặc, một khi vim được tải, gõ :e ++ff=unix.


4
Đó là Cú pháp. :help editcho thấy e[dit]! [++opt] [+cmd]. Và :help ++enói rằng đối số [++ opt] có thể được sử dụng để buộc giá trị của 'fileformat' [..] .
dennis

19
chỉ để làm rõ, :set listhiển thị dòng mới ( $), :e ++ff=unixhiển thị CR ( ^M); nếu bạn muốn xem cả hai, :set listthì:e ++ff=unix
Yibo Yang

5
Để mở rộng nhận xét của @ dennis, hãy :set ff=unixbảo Vim thay đổi kết thúc dòng thành kiểu unix (như một phần của cài đặt định dạng tệp), vì vậy các ký tự ^ M không còn ở đó nữa (và do đó không được hiển thị). :e ++ff=unixnói với nó để buộc thiết lập tập tin dạng unixmà không thực sự thay đổi nội dung. Vì vậy, vim đọc nó giống như một tệp Unix, xem các ký tự CR là phụ và hiển thị chúng dưới dạng ^ M.
- Phục hồi lại

2
Không phải vì tôi vẫn không làm việc cho tôi vimvì một số lý do ... Ý tôi là không phải -btùy chọn, cũng không phải :e ++ff=unixkhi bên trong :(
RAM237

3
được rồi ,: e ++ ff = unix đã hoạt động. Bây giờ làm thế nào để tôi tắt nó?
Croo

78

VI hiển thị các dòng mới (ký tự LF, mã x0A) bằng cách hiển thị văn bản tiếp theo trên dòng tiếp theo.

Sử dụng công -btắc cho chế độ nhị phân. Ví dụ vi -b filenamehay vim -b filename --.

Sau đó, nó sẽ hiển thị các ký tự CR ( x0D), thường không được sử dụng trong các tệp kiểu Unix, như các ký tự ^M.


Tôi thường không cần phải xem dòng kết thúc, bởi vì tôi chủ yếu làm việc trong Unixmôi trường. Nhưng tôi muốn được cảnh báo về các kết thúc dòng Windows nếu có bất kỳ trong tệp. Sẽ vi -b filenamehoặc :set binarychỉ hiển thị ^Mnếu đó là một tệp loại cửa sổ và không có kết thúc dòng nào khác?
alpha_989

31

Chỉ cần làm rõ lý do tại sao :set listsẽ không hiển thị CR như ^Mkhông có e ++ff=unixvà tại sao :set listkhông liên quan gì đến ^M.

Bên trong khi Vim đọc một tệp vào bộ đệm của nó, nó sẽ thay thế tất cả các ký tự kết thúc dòng bằng biểu diễn của chính nó (hãy gọi nó $là). Để xác định những ký tự nào cần được loại bỏ, trước tiên, nó sẽ phát hiện các kết thúc dòng định dạng nào được lưu trữ trong một tệp. Nếu chỉ có CRLF '\r\n'hoặc chỉ CR '\r'hoặc chỉ LF '\n'ký tự kết thúc dòng, thì 'fileformat'được thiết lập để dos, macunixtương ứng.

Khi listtùy chọn được đặt, Vim hiển thị $ký tự khi xảy ra ngắt dòng bất kể fileformattùy chọn nào được phát hiện. Nó sử dụng biểu diễn bên trong của các ngắt dòng và đó là những gì nó hiển thị.

Bây giờ khi bạn ghi bộ đệm vào đĩa, Vim sẽ chèn các ký tự kết thúc dòng theo fileformatcác tùy chọn đã được phát hiện, về cơ bản là chuyển đổi tất cả các $ký tự bên trong đó bằng các ký tự phù hợp. Nếu điều đó fileformatxảy ra unixthì nó sẽ chỉ đơn giản là viết \nthay cho ngắt dòng bên trong của nó.

Bí quyết là buộc Vim đọc một dostệp được mã hóa thành unixmột. Hiệu ứng ròng là nó sẽ loại bỏ tất cả \ncác phần còn lại \rchưa được xử lý và hiển thị chúng dưới dạng ^Mtrong bộ đệm của bạn. Cài đặt :set listsẽ hiển thị thêm các kết thúc dòng bên trong như $. Rốt cuộc, bạn thấy ^M$ở vị trí dosngắt dòng được mã hóa.

Cũng lưu ý rằng :set listkhông có gì để làm với hiển thị ^M. Bạn có thể tự kiểm tra nó ( listtrước tiên hãy chắc chắn rằng bạn đã tắt tùy chọn) bằng cách chèn CR đơn bằng cách sử dụng CTRL-Vtheo sau Entertrong chế độ chèn. Sau khi ghi bộ đệm vào đĩa và mở lại, bạn sẽ thấy ^Mmặc dù listtùy chọn được đặt thành 0.

Bạn có thể tìm thêm về các định dạng tệp trên http://vim.wikia.com/wiki/File_format hoặc bằng cách nhập :help 'fileformat'vào Vim.


11

Hãy thử lệnh sau.

: đặt nhị phân

Trong VIM, điều này sẽ làm tương tự như sử dụng tùy chọn dòng lệnh "-b". Nếu bạn đặt tệp này vào tệp khởi động (tức là .vimrc), nó sẽ luôn ở vị trí dành cho bạn.

Trên nhiều hệ thống * nix, có lệnh "dos2unix" hoặc "unix2dos" có thể xử lý tệp và khắc phục mọi sự cố kết thúc dòng đáng ngờ. Nếu không có vấn đề với kết thúc dòng, các tệp sẽ không được thay đổi.


Thật không may trong hệ thống của tôi (Ubuntu 16.04) set binarykhông giống như vim -b filename.py. Bất cứ ý tưởng tại sao? Tôi đã kiểm tra helpvà có vẻ như những gì bạn nói nói chung là chính xác. Làm thế nào để tôi tìm ra lý do tại sao điều này là như vậy?
alpha_989

:e ++ff=unixkhông hiển thị ^Mchính xác và không hiển thị nó khi tôi sử dụng các unixloại tệp .. Vì vậy, tôi đoán vấn đề đã được giải quyết ngay bây giờ ...
alpha_989

6

Tôi đề nghị bạn chỉnh sửa tệp .vimrc của bạn để chạy danh sách các lệnh. Chỉnh sửa tệp .vimrc của bạn, như thế này:

cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF

Khi bạn đang thực thi vim, các lệnh vào .vimrc sẽ được thực thi và bạn có thể xem ví dụ này:

My line with CRLF eol here ^M¶

2

bằng cách sử dụng cat-Abạn có thể thấy các dòng mới như $, các tab như^I
cat -A myfile


0

Bạn có thể xem các dòng ngắt bằng trình chỉnh sửa gedit .

Đầu tiên, nếu bạn chưa cài đặt:

sudo apt-get install gedit

Bây giờ, cài đặt plugin gedit :

sudo apt-get install gedit-plugins

và chọn plugin Vẽ không gian , nhập vào Tùy chọn và chọn Vẽ các dòng mới

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Sử dụng VSCode, bạn có thể cài đặt tiện ích mở rộng Kết thúc dòng .

Sublime Text 3 có một plugin có tên RawLineEdit sẽ hiển thị các kết thúc dòng và cho phép chèn loại kết thúc dòng tùy ý

shift + ctrl + p và bắt đầu nhập tên của plugin và chuyển đổi để hiển thị kết thúc dòng.

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.