Vô hiệu hóa vi đi đến dòng truy cập cuối cùng khi mở tệp


9

Có thứ gì tôi có thể đặt trong exrctệp của mình để ngăn vikhông cho đến dòng cuối cùng tôi đã ở lần trước tôi đã mở tệp và chỉ đặt con trỏ ở trên cùng theo mặc định không?

Tôi nghĩ rằng nó là đặc thù của distro - nó không hoạt động như vậy trên Solaris mà là trên RHEL.

Câu trả lời:


7

Tính năng này được thực hiện dưới dạng tự động. Nó được thiết lập trong /etc/vimrc- xem đoạn trích dưới đây. Xóa nó khỏi đó hoặc thêm lệnh để xóa autocommand đó vào tệp vimrc của bạn. (Tôi đang sử dụng fedora - trên rrc nó sẽ rất giống nhau)

if has("autocmd")
  augroup fedora
  autocmd!
  "...
  " When editing a file, always jump to the last cursor position
  autocmd BufReadPost *
  \ if line("'\"") > 0 && line ("'\"") <= line("$") |
  \   exe "normal! g'\"" |
  \ endif
  "...
  augroup END
endif

Nếu bạn không có quyền hoặc không muốn thay đổi /etc/vimrc, lệnh đặt địa phương của bạn .vimrcđể xóa tự động là :au! <group> <cmdname>, trong trường hợp này :au! fedora BufReadPost.


2
Tôi biết đây là một câu trả lời cũ nhưng điều này không hiệu quả với tôi trên RHEL. Tôi đưa vào au! redhat BufReadPosttrong tôi ~/.vimrcnhưng nó vẫn thiết lập vị trí con trỏ đến vị trí cuối cùng. Cuối cùng, tôi chỉ cần đặt một call cursor(1,1)để buộc con trỏ ở đầu tập tin.
Munir

2

Đây là một nhận xét nhiều hơn là một câu trả lời thực sự. Solaris không phải là một bản phân phối Linux. Nó là một phiên bản của hệ điều hành Unix. vi trên RedHat là bản phân phối Linux (Linux! = Unix) được liên kết tượng trưng với vim. Solaris vi dùng để chỉ trình soạn thảo vi chính hãng được tạo bởi Bill Joy. Vì vậy, chúng tôi không nói ở đây về các biên tập viên tương tự. Tôi không biết vim hành xử như thế nào khi tôi sử dụng nvi trên hộp OpenBSD của tôi, một bản sao khác của vi chính hãng. Tôi sẽ đề nghị bạn cài đặt trình soạn thảo vi trên hộp RedHat của bạn trước và thử tái tạo vấn đề. Nhập văn bản vi filename.txt nên mở tệp và đặt lời nhắc tại cầu xin của dòng đầu tiên. Gõ vi + filename.txtnên mở tập tin ở dòng cuối cùng. Tuy nhiên, vi có thể được mở với nhiều tùy chọn khác như vi +n filename.txtđặt bạn ở đầu dòng thứ n hoặcvi +/regexp filename.txttrong đó đặt bạn ở đầu dòng chứa lần xuất hiện đầu tiên của biểu thức chính quy (regrec), view filename.txtchế độ chỉ đọc. Vui lòng tham khảo các trang người đàn ông cho danh sách đầy đủ. Đừng quên hủy liên kết lệnh vi từ vim khi bạn cài đặt một vi thực.


1

Có thể có một số tùy chọn khác có sẵn cho việc này, nhưng bạn có thể sử dụng các công việc sau đây xung quanh

vim <filename> +1

+1 cho biết, để di chuyển con trỏ đến dòng 1.


tôi đã nhận được line 2: E682: Invalid search pattern or delimiterkhi tôi đặt vim +1vào .exrc của mình - tôi không muốn phải chỉ định một tệp, tức là tôi muốn nó được áp dụng cho bất kỳ tệp nào
amphibient

cùng vớivim * +1
lưỡng cư

Đây là một tùy chọn để được nhập tại dòng lệnh và không phải là một tùy chọn để đưa vào vimrctập tin. Như đã đề cập đây là một công việc xung quanh.
mtk

Tôi nghĩ rằng nó là đặc thù của distro - nó không hoạt động như vậy trên Solaris mà là trên RHEL
lưỡng cư

0

Để đảm bảo, chức năng này được thêm bởi một plugin hãy thử mở tệp bằng

vim --noplugin <filename>

Nếu con trỏ không nhảy đến vị trí chỉnh sửa cuối cùng, bạn nên mở lại tệp mà không cần --noplugin-chuyển đổi và nghiên cứu đầu ra của :scriptnames. :scriptnamesliệt kê tất cả các tập lệnh có nguồn gốc trước đó.

Nếu bạn là người dùng vim bán kinh nghiệm, bạn có thể loại trừ hầu hết các tập lệnh bằng đường dẫn. Chẳng hạn, tất cả các tập lệnh nằm dưới &rtp/{ftplugin,spell,colors,syntax}(& rtp: = runtimepath) đều không có vấn đề.

Tôi có thể tưởng tượng rằng tập lệnh thực hiện tính năng này có một tên liên quan.


0

Tôi đã có vấn đề ngược lại và kết quả là ở đây. Tôi đã tự hỏi tại sao con trỏ của tôi sẽ quay trở lại đầu tập tin. Tôi đã quen với việc chuyển đổi giữa các bộ đệm và phải tìm vị trí của mình mỗi lần sẽ không hiệu quả!

Không có câu trả lời nào ở đây nói về vấn đề này, vì vậy tôi nghĩ rằng tôi sẽ thêm câu trả lời của riêng mình, vì điều đó sẽ giải quyết vấn đề của bạn. Tất cả những gì tôi phải làm là thêm một nhận xét C hoặc C ++ trên dòng đầu tiên sau một khoảng trắng! Tôi không biết liệu đây có phải là một tính năng hay lỗi hay không, nhưng ... con trỏ sẽ quay lại ngay trên đầu trong trường hợp đó.

+---- see the space here?
|
v
 // first line of file

Xóa bình luận hoặc không gian khắc phục vấn đề của tôi .

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.