Saya suka bahwa garis panjang ditampilkan lebih dari satu garis terminal; Saya tidak suka vim memasukkan baris baru ke teks saya yang sebenarnya. Bagian mana dari .vimrc yang harus saya ubah?
Untuk kejelasan: Anda suka bahwa garis panjang ditampilkan lebih dari satu garis terminal; Anda tidak suka vim memasukkan baris baru ke teks Anda yang sebenarnya? Jika demikian, maka :set nowrapkebalikan dari yang Anda inginkan :(.
Andrew Aylett
@Andrew: ya ringkasan Anda persis seperti yang saya inginkan
Haiyuan Zhang
Jawaban:
304
Menggunakan
:set wrap
Untuk membungkus garis secara visual, yaitu baris masih satu baris teks, tetapi Vim menampilkannya pada beberapa baris.
Menggunakan
:set nowrap
Untuk menampilkan garis panjang sebagai hanya satu garis (yaitu Anda harus menggulir secara horizontal untuk melihat seluruh garis).
Terima kasih untuk tipsnya kalian. Saya pergi dengan: atur nowrap dan: atur textwidth = 0 berfungsi dengan baik
Robert Beltran
5
Ketika saya mengetik, saya masih ingin melihat "visual" batas 80 kolom dan saya tidak ingin vim untuk menambahkan feed baris secara otomatis ketika saya mengetik setelah kolom ke-80. Bagaimana saya lakukan?
Olivier Pons
7
Ini persis jawaban yang saya cari, tapi itu bukan jawaban untuk pertanyaan OP. Agak menyesatkan untuk menganggap ini sebagai jawaban teratas. Saya tidak tahu bagaimana cara memperbaiki situasi ini. Saya hanya akan mengedit jawaban Anda untuk juga menjawab pertanyaan awal. Tetapi sudah ada jawaban yang tepat yang hampir sama tinggi suara. Jadi saya hanya memilih untuk mengganti dua jawaban.
Daniel Darabos
3
Ini tepatnya jawaban yang saya tidak cari, dan itu bukan jawaban untuk pertanyaan OP.
peeol
Ini bukan jawaban untuk pertanyaan itu.
194
Saya suka bahwa garis panjang ditampilkan lebih dari satu garis terminal
Jenis pembungkus garis visual / virtual ini diaktifkan dengan wrapopsi jendela:
set wrap
Saya tidak suka vim memasukkan baris baru ke teks saya yang sebenarnya.
Untuk mematikan pembungkus garis fisik, kosongkan opsi textwidthdan wrapmarginpenyangga:
Terima kasih! set textwidth=0 wrapmargin=0berfungsi tetapi jika saya memasukkannya ke dalam .vimrc, itu tidak memiliki efek misalnya untuk file teks biasa. Bagaimana saya mencari tahu dan menghilangkan timpa?
qubodup
7
@ qubodup Anda dapat menguji apakah ada sesuatu yang menimpa pengaturan .vimrc Anda dengan membuka file tempat Anda melihat masalah dan memasukkannya :verbose set textwidth? wrapmargin?. Ini akan memberi tahu Anda nilai mereka saat ini dan juga di mana mereka ditetapkan. Mungkin saja Anda memiliki plugin yang menggantikannya. Dalam hal ini Anda dapat menghapus instalasi plugin itu, atau mencoba mengganti pengaturan plugin nanti di runtimepath Anda (misalnya:) ~/.vim/afteratau dengan perintah otomatis Anda sendiri. Pendekatan yang tepat akan tergantung pada di mana / bagaimana pengaturan ulang.
Laurence Gonsalves
set wrapdan set linebreakapa yang dilakukan untukku.
Ilia Choly
36
Saya tidak yakin saya mengerti sepenuhnya, tetapi Anda mungkin mencari pengaturan konfigurasi 'formatoptions'. Coba sesuatu seperti :set formatoptions-=t. The tpilihan akan memasukkan jeda baris untuk membuat bungkus teks di set lebar oleh textwidth. Anda juga dapat menempatkan perintah ini di Anda .vimrc, cukup hapus titik dua ( :).
Bagi saya ini adalah pilihan terbaik untuk mengatasi keinginan OP. Saya suka kenyataan bahwa vim masih menunjukkan garis vertikal pada tw.
mitchus
3
Ini adalah satu-satunya jawaban yang benar-benar menjawab pertanyaan OP. Kebanyakan orang melakukan yang sebaliknya. OP masih ingin garis panjang ditampilkan melilit, tetapi agar vim tidak memasukkan jeda baris secara otomatis.
Kecuali bahwa ia melakukan kebalikan dari apa yang didefinisikan OP sebagai perilaku yang diinginkan ...: P
Morlock
5
@Morlock, tetapi menjawab pertanyaan yang saya miliki dan google membawa saya ke sini :)
Ben Usman
apakah ada cara pintas keyboard untuk ini?
Pini Cheyni
@PiniCheyni, tambahkan ke file .vimrc Anda: nnoremap <Cw>: atur invwrap <CR> Kemudian Anda dapat menggunakan Ctrl + W untuk mengaktifkan pembungkus teks.
reas0n
30
:set tw=0
VIM tidak akan menyisipkan jalur terputus secara otomatis, tetapi akan menjaga pembungkus garis.
Saya ingin yang sebaliknya ... ketika saya mengetik saya masih ingin melihat "visual" batas 80 kolom dan saya tidak ingin vim untuk secara otomatis menambahkan line feed ketika saya mengetik setelah kolom ke-80. Bagaimana saya lakukan?
Olivier Pons
16
Anda mungkin menemukan set lbrbermanfaat; dengan set wrapini akan membungkus tetapi hanya memotong garis pada spasi putih dan tidak di tengah kata.
misalnya
without lbr the li
ne can be split on
a word
dan
with lbr on the
line will be
split on
whitespace only
Sangat disarankan untuk menghindari menyingkat opsi karena di masa depan Anda harus melakukan pencarian pada sistem bantuan untuk memahami apa yang telah Anda set nolinebreakset lbr
setel
12
set formatoptions-=t Menyimpan lebar teks visual tetapi tidak menambahkan baris baru dalam mode sisipkan.
Aneh bahwa pengaturan yang sederhana seperti ini membutuhkan jumlah 'fokus-fokus' ini untuk bekerja.
Untuk menjawab pertanyaan Anda sekarang, bagi saya sepertinya berfungsi dengan kombinasi berikut:
:set wrap linebreak nolist
(ini tampaknya mencegah garis yang ada dari putus, hanya membungkus.)
DAN
set formatoptions=l
(ini mencegah baris baru / yang diedit dari melanggar, sementara + = tidak melakukannya untuk saya karena pengaturan / plugin lain tampaknya menemukan ruang dan menambahkan opsi mereka sendiri yang menimpa tambang saya.)
Jika, seperti saya, Anda menjalankan gVim di Windows, maka file .vimrc Anda dapat mengambil sumber file Vimscript 'contoh' lainnya yang secara otomatis disetel textwidth(dalam kasus saya ke78 ) untuk file teks.
Dalam kasus saya, komentar Vitor menyarankan saya menjalankan yang berikut:
:verbose set tw?
Melakukannya memberi saya output berikut:
textwidth=78
Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim
Di vimrc_example.vim , saya menemukan baris yang relevan:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
...
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
...
Dan saya menemukan bahwa .vimrc saya sedang mencari file itu:
source $VIMRUNTIME/vimrc_example.vim
Dalam kasus saya, saya tidak ingin textwidthdiatur untuk file apa pun, jadi saya hanya berkomentar di baris yang relevan di vimrc_example.vim .
Daripada mengedit file vimrc_example.vim, saya hanya menambahkan autocmd FileType text setlocal textwidth=0ke file vimrc dan itu memperbaiki masalah ketika solusi yang diusulkan lainnya tidak.
GrandAdmiral
3
Benar yang mengatur nowrap akan memungkinkan Anda untuk menempelkan garis panjang tanpa vi / vim menambahkan baris baru, tetapi kemudian garis tersebut tidak dibungkus secara visual agar mudah dibaca. Alih-alih, hanya satu garis panjang yang harus Anda gulir.
Untuk memiliki garis yang dibungkus secara visual tetapi tidak memiliki karakter baris baru yang dimasukkan ke dalamnya, telah menetapkan bungkus (yang mungkin default sehingga tidak diperlukan untuk mengatur) dan mengatur textwidth = 0 .
Pada beberapa sistem pengaturan textwidth = 0 adalah default. Jika Anda tidak menganggapnya demikian, tambahkan set textwidth = 0 ke file .exrc Anda sehingga menjadi default pengguna Anda untuk semua sesi vi / vim.
:set nowrap
kebalikan dari yang Anda inginkan :(.Jawaban:
Menggunakan
Untuk membungkus garis secara visual, yaitu baris masih satu baris teks, tetapi Vim menampilkannya pada beberapa baris.
Menggunakan
Untuk menampilkan garis panjang sebagai hanya satu garis (yaitu Anda harus menggulir secara horizontal untuk melihat seluruh garis).
sumber
Jenis pembungkus garis visual / virtual ini diaktifkan dengan
wrap
opsi jendela:Untuk mematikan pembungkus garis fisik, kosongkan opsi
textwidth
danwrapmargin
penyangga:sumber
set textwidth=0 wrapmargin=0
berfungsi tetapi jika saya memasukkannya ke dalam.vimrc
, itu tidak memiliki efek misalnya untuk file teks biasa. Bagaimana saya mencari tahu dan menghilangkan timpa?:verbose set textwidth? wrapmargin?
. Ini akan memberi tahu Anda nilai mereka saat ini dan juga di mana mereka ditetapkan. Mungkin saja Anda memiliki plugin yang menggantikannya. Dalam hal ini Anda dapat menghapus instalasi plugin itu, atau mencoba mengganti pengaturan plugin nanti di runtimepath Anda (misalnya:)~/.vim/after
atau dengan perintah otomatis Anda sendiri. Pendekatan yang tepat akan tergantung pada di mana / bagaimana pengaturan ulang.set wrap
danset linebreak
apa yang dilakukan untukku.Saya tidak yakin saya mengerti sepenuhnya, tetapi Anda mungkin mencari pengaturan konfigurasi 'formatoptions'. Coba sesuatu seperti
:set formatoptions-=t
. Thet
pilihan akan memasukkan jeda baris untuk membuat bungkus teks di set lebar olehtextwidth
. Anda juga dapat menempatkan perintah ini di Anda.vimrc
, cukup hapus titik dua (:
).sumber
tw
.Gunakan
:set nowrap
.. bekerja seperti pesona!sumber
:set tw=0
VIM tidak akan menyisipkan jalur terputus secara otomatis, tetapi akan menjaga pembungkus garis.
sumber
Anda mungkin menemukan
set lbr
bermanfaat; denganset wrap
ini akan membungkus tetapi hanya memotong garis pada spasi putih dan tidak di tengah kata.misalnya
dan
sumber
set nolinebreak
set lbr
set formatoptions-=t
Menyimpan lebar teks visual tetapi tidak menambahkan baris baru dalam mode sisipkan.sumber
Aneh bahwa pengaturan yang sederhana seperti ini membutuhkan jumlah 'fokus-fokus' ini untuk bekerja.
Untuk menjawab pertanyaan Anda sekarang, bagi saya sepertinya berfungsi dengan kombinasi berikut:
(ini tampaknya mencegah garis yang ada dari putus, hanya membungkus.)
DAN
(ini mencegah baris baru / yang diedit dari melanggar, sementara + = tidak melakukannya untuk saya karena pengaturan / plugin lain tampaknya menemukan ruang dan menambahkan opsi mereka sendiri yang menimpa tambang saya.)
sumber
Jika, seperti saya, Anda menjalankan gVim di Windows, maka file .vimrc Anda dapat mengambil sumber file Vimscript 'contoh' lainnya yang secara otomatis disetel
textwidth
(dalam kasus saya ke78
) untuk file teks.Jawaban saya untuk pertanyaan serupa dengan yang ini - Bagaimana cara menghentikan teks pembungkus gVim di kolom 80 - di situs Pertukaran Vi dan Vim Stack :
sumber
autocmd FileType text setlocal textwidth=0
ke file vimrc dan itu memperbaiki masalah ketika solusi yang diusulkan lainnya tidak.Benar yang mengatur nowrap akan memungkinkan Anda untuk menempelkan garis panjang tanpa vi / vim menambahkan baris baru, tetapi kemudian garis tersebut tidak dibungkus secara visual agar mudah dibaca. Alih-alih, hanya satu garis panjang yang harus Anda gulir.
Untuk memiliki garis yang dibungkus secara visual tetapi tidak memiliki karakter baris baru yang dimasukkan ke dalamnya, telah menetapkan bungkus (yang mungkin default sehingga tidak diperlukan untuk mengatur) dan mengatur textwidth = 0 .
Pada beberapa sistem pengaturan textwidth = 0 adalah default. Jika Anda tidak menganggapnya demikian, tambahkan set textwidth = 0 ke file .exrc Anda sehingga menjadi default pengguna Anda untuk semua sesi vi / vim.
sumber