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?
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?
Câu trả lời:
:set list
trong 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
'.
:set list
sẽ KHÔNG hiển thị các ^M
ký tự (CR). Cung cấp -b
tùy chọn cho vi / vim sẽ hoạt động. Hoặc, khi vim được tải, hãy nhập::e ++ff=unix
:set nolist
Không đồng ý với câu trả lời chính thức:
:set list
sẽ 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
.
:help edit
cho thấy e[dit]! [++opt] [+cmd]
. Và :help ++e
nói rằng đối số [++ opt] có thể được sử dụng để buộc giá trị của 'fileformat' [..] .
:set list
hiển thị dòng mới ( $
), :e ++ff=unix
hiển thị CR ( ^M
); nếu bạn muốn xem cả hai, :set list
thì:e ++ff=unix
:set ff=unix
bả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=unix
nói với nó để buộc thiết lập tập tin dạng unix
mà 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.
vim
vì một số lý do ... Ý tôi là không phải -b
tùy chọn, cũng không phải :e ++ff=unix
khi bên trong :(
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 -b
tắc cho chế độ nhị phân. Ví dụ vi -b filename
hay 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
.
Unix
mô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 filename
hoặc :set binary
chỉ hiển thị ^M
nế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?
Chỉ cần làm rõ lý do tại sao :set list
sẽ không hiển thị CR như ^M
không có e ++ff=unix
và tại sao :set list
khô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
, mac
và unix
tương ứng.
Khi list
tùy chọn được đặt, Vim hiển thị $
ký tự khi xảy ra ngắt dòng bất kể fileformat
tù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 fileformat
cá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 đó fileformat
xảy ra unix
thì nó sẽ chỉ đơn giản là viết \n
thay cho ngắt dòng bên trong của nó.
Bí quyết là buộc Vim đọc một dos
tệp được mã hóa thành unix
một. Hiệu ứng ròng là nó sẽ loại bỏ tất cả \n
các phần còn lại \r
chưa được xử lý và hiển thị chúng dưới dạng ^M
trong bộ đệm của bạn. Cài đặt :set list
sẽ 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í dos
ngắt dòng được mã hóa.
Cũng lưu ý rằng :set list
không có gì để làm với hiển thị ^M
. Bạn có thể tự kiểm tra nó ( list
trướ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-V
theo sau Enter
trong chế độ chèn. Sau khi ghi bộ đệm vào đĩa và mở lại, bạn sẽ thấy ^M
mặc dù list
tù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.
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.
set binary
không giống như vim -b filename.py
. Bất cứ ý tưởng tại sao? Tôi đã kiểm tra help
và 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?
:e ++ff=unix
không hiển thị ^M
chính xác và không hiển thị nó khi tôi sử dụng các unix
loại tệp .. Vì vậy, tôi đoán vấn đề đã được giải quyết ngay bây giờ ...
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¶
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
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.