it-swarm-vi.tech

Kết cấu của chúng

Nếu tôi mở các tệp tôi đã tạo trong Windows, tất cả các dòng kết thúc bằng ^M.
[.__.] Làm cách nào để xóa tất cả các ký tự này cùng một lúc?

652
Bert Hekman

dos2unix là tiện ích dòng lệnh sẽ thực hiện việc này hoặc :%s/^M//g sẽ nếu bạn sử dụng Ctrl-vCtrl-m để nhập ^ M, hoặc bạn có thể :set ff=unix và vim sẽ làm điều đó cho bạn.

Tài liệu trên cài đặt 'fileformat' là tại đây và wiki vim có toàn diện trang trên chuyển đổi kết thúc dòng .

Thay vào đó, nếu bạn di chuyển các tệp qua lại nhiều, bạn có thể không muốn chuyển đổi chúng, mà là để làm :set ff=dos, vì vậy vim sẽ biết đó là tệp DOS và sử dụng các quy ước của DOS cho các kết thúc dòng.

995
pjz

Thay đổi kết thúc dòng trong dạng xem:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

Điều này cũng có thể được sử dụng như lưu hoạt động (: w một mình sẽ không lưu bằng cách sử dụng các kết thúc dòng bạn thấy trên màn hình):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

Và bạn có thể sử dụng nó từ dòng lệnh:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done
250
Ludvig A. Norin

Tôi thường sử dụng

:%s/\r/\r/g

có vẻ hơi kỳ quặc, nhưng hoạt động vì cách mà vim khớp với các nguồn cấp. Tôi cũng thấy dễ nhớ hơn :)

154
t-dub

Tôi thích sử dụng lệnh sau:

:set fileformat=unix

Bạn cũng có thể sử dụng mac hoặc dos để lần lượt chuyển đổi tệp của mình sang quy ước tệp Macintosh hoặc MS-DOS/MS-Windows. Và nó không làm gì nếu tập tin đã ở định dạng chính xác.

Để biết thêm thông tin, xem trợ giúp vim:

:help fileformat
79
Sylvain Defresne
:%s/\r+//g

Trong Vim, dải đó trả lại tất cả vận chuyển và chỉ để lại dòng mới.

19
mercutio

:set fileformat=unix để chuyển đổi từ dos sang unix.

16
Martin Sjögren
13
Alex Gartrell

dos2unix có thể trực tiếp sửa đổi nội dung tệp.

Bạn có thể trực tiếp sử dụng nó trên tệp mà không cần chuyển hướng tệp tạm thời.

dos2unix input.txt input.txt

Ở trên sử dụng bàn phím giả định của Hoa Kỳ. Sử dụng tùy chọn -437 để sử dụng bàn phím Vương quốc Anh.

dos2unix -437 input.txt input.txt
9
Venkataramesh Kommoju

Chuyển đổi thư mục của các tập tin từ dos sang Unix

Sử dụng dòng lệnh và sed, tìm tất cả các tệp trong thư mục hiện tại có phần mở rộng ".ext" và xóa tất cả "^ M"

@ https://Gist.github.com/sparkida/777317

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

đồng thời, như đã đề cập ở trên ^ M Ctrl+V + Ctrl+M (không chỉ gõ biểu tượng dấu "^" và M)

7
Sparkida
tr -d '\15\32' < winfile.txt > unixfile.txt

(xem: http://kb.iu.edu/data/acux.html )

6
MichaelD

Với lệnh sau:

:%s/^M$//g 

Nhận ^M để xuất hiện loại CtrlV sau đó CtrlMCtrlV nói với Vim để đưa nhân vật tiếp theo nhập theo nghĩa đen.

5
Dave Webb

Các bước sau đây có thể chuyển đổi định dạng tệp cho dos thành unix:

:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.

Tham khảo: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

5
ajitomatix

Bạn có thể dùng:

vim somefile.txt +"%s/\r/\r/g" +wq

hoặc dos2unix utility.

4
Christy Wald
:g/Ctrl-v Ctrl-m/s///

CtrlM là ký tự \r hoặc trả về vận chuyển, mà kết thúc dòng DOS thêm vào. CtrlV nói với vim để chèn một chữ CtrlM nhân vật ở dòng lệnh.

Được thực hiện toàn bộ, lệnh này thay thế tất cả \r mà không có gì, loại bỏ chúng khỏi cuối dòng.

4
Rob Wells

Nhận xét về việc ^ M xuất hiện là những gì làm việc cho tôi. Chỉ cần gõ "^ M" trong vi của tôi không có gì (không tìm thấy). Các CTRL+VCTRL+M trình tự đã làm nó hoàn hảo mặc dù.

Lệnh thay thế làm việc của tôi là

:%s/Ctrl-V Ctrl-M/\r/g

và nó trông như thế này trên màn hình của tôi:

:%s/^M/\r/g
4
Dannid

Tôi tìm thấy một cách rất dễ dàng: Mở tệp bằng nano: nano file.txt

Nhấn CTRL+O để tiết kiệm, nhưng trước khi nhấn Enter, nhấn: ALT+D để chuyển đổi kết thúc dòng của DOS và Unix/Linux, hoặc: ALT+M để chuyển đổi kết thúc dòng Mac và Unix/Linux, sau đó nhấn Enter để tiết kiệm và CTRL+X bỏ thuốc lá.

4
Stefan Sjöberg

Bạn có thể sử dụng lệnh sau:
[.__.] :%s/^V^M//g
[.__.] trong đó '^' có nghĩa là sử dụng CTRL Chìa khóa.

3
JayG

lệnh bên dưới được sử dụng để định dạng lại tất cả tệp .sh trong thư mục hiện tại, tôi đã thử nó trên hệ điều hành Fedora của tôi.

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
2
user3220487

Tôi biết tôi đã thấy điều này ở đâu đó. Đây là mẹo đăng nhập FreeBSD:

Cần xóa tất cả những ký tự ^ M khỏi tệp DOS? Thử

tr -d \\r < dosfile > newfile
    -- Originally by Dru <[email protected]>
1
Albaro Pereyra

Thông thường có một lệnh dos2unix bạn có thể sử dụng cho việc này, chỉ cần đảm bảo rằng bạn đã đọc hướng dẫn vì các phiên bản GNU và BSD khác nhau về cách chúng xử lý các đối số.

Phiên bản BSD:

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

Phiên bản GNU:

dos2unix $FILENAME

Ngoài ra, bạn có thể tạo dos2unix của riêng mình với bất kỳ câu trả lời được đề xuất nào ở đây, ví dụ:

function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;

    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}
1
dsm

Để chạy trực tiếp vào bảng điều khiển linux: vim file.txt +"set ff=unix" +wq

1
CBuzatu

Trong vim, gõ:

:w !dos2unix %

Điều này sẽ chuyển nội dung của bộ đệm hiện tại của bạn sang lệnh dos2unix và viết kết quả lên nội dung hiện tại. Vim sẽ yêu cầu tải lại tập tin sau

1
Tallak Tveide

nếu bạn tạo một tệp trong NotePad hoặc NotePad ++ trong windows và mang nó đến Linux và mở nó bằng vim, bạn sẽ thấy ^ M ở cuối mỗi dòng. Để loại bỏ điều này,

Tại thiết bị đầu cuối Linux của bạn, nhập

tên tệp dos2unix.ext

Điều này sẽ làm phép thuật cần thiết.

0
Santle Camilus

Mặc dù chủ đề này rất cũ, tôi muốn đặt một thứ khác từ wikia:

%s/\r\+$//g

mà điền tìm tất cả các dấu hiệu trả lại vận chuyển (một và nhiều đại diện) cho đến cuối dòng và xóa, vì vậy chỉ cần \n sẽ ở lại eol.

0
loadaverage

Đây là cách của tôi Tôi đã mở một tệp trong dos EOL và khi tôi lưu tệp sẽ tự động chuyển đổi thành unix EOL

autocmd BufWrite * :set ff=unix
0
Thomas PABST

Tôi muốn dòng mới thay cho ^ M's. Perl để giải cứu:

Perl -pi.bak -e 's/\x0d/\n/g' Excel_created.txt

Hoặc để viết lên thiết bị xuất chuẩn:

Perl -p -e 's/\x0d/\n/g' < Excel_created.txt
0
user3379574