O ile dobrze pamiętam, 5dd powinno być poprawną składnią i powinno usunąć 5 wierszy, zaczynając od tego, na którym znajduje się kursor. Czy jest jakaś szansa, że CAPS LOCK jest włączony i używasz układu klawiatury, który powoduje przesunięcie klawiszy numerycznych, gdy tak jest?
Wygląda na to, że wprowadzasz polecenia w trybie poleceń (inaczej „tryb Ex”). W tym kontekście :5dusunąłby wiersz numer 5, nic więcej. Aby 5dddziałać zgodnie z przeznaczeniem - to znaczy usunąć pięć kolejnych wierszy zaczynających się od kursora - wprowadź go w normalny tryb i nie poprzedzaj poleceń znakiem :.
Jeśli znasz numery wierszy, możesz usunąć wiele wierszy (zakresów):
:[start_line_no],[end_line_no]d
Uwaga: d oznacza usuń
gdzie
start_line_no to linia początkowa no, którą chcesz usunąć, a end_line_no to linia końcowa no, którą chcesz usunąć. Linie między początkiem a końcem, w tym początek i koniec, zostaną usunięte.
Na przykład:
:45,101d
Wiersze od 45 do 101, w tym od 45 do 101, zostaną usunięte.
Polecenia wymienione do użytku w trybie normalnym (przedrostek oznacza :tryb poleceń).
Przetestowane w Vimie.
Według kwoty linii:
numdd - usuwa num linii w dół począwszy od liczby pozycji kursora (na przykład 5ddusuwa bieżącej linii 4 linie pod nim => usuwa bieżącej linii ( Num-1 ), linie pod nią )
numdk - usunie num linii UP z bieżącej linii i samą bieżącą linię (np. 3dkusunie bieżącą linię i 3 linie nad nią => usuwa bieżącą linię i num linii nad nią )
Według numerów linii:
dnumG - usunie linie z bieżącej linii (włącznie) UP do numeru linii num (włącznie) (np. jeśli kursor jest obecnie w linii 5 d2G, usunie linie 2-5 włącznie)
dnumgg - usunie wiersze z bieżącej linii (włącznie) W DÓŁ do numeru linii num (włącznie) (np. jeśli kursor jest aktualnie na linii 2 d6gg, usunie linie 2-6 włącznie)
( tylko tryb poleceń ) :num1 ,num2d - usunie linie numer linii num1 (włącznie) DOWN do numeru linii num2 (włącznie) . Uwaga: jeśli num1 jest większe niż num2 - vim zareaguje zBackwards range given, OK to swap (y/n)?
1
Pomogło mi to, ponieważ nie zdawałem sobie sprawy, że num 'd' d 'próbuje usunąć pod kursorem. Mój kursor znajdował się na dole pliku, próbując usunąć linie nad kursorem! dzięki za pomoc!
Jeśli wolisz metodę niewizualną i znasz numery linii, chciałbym zasugerować Ci inny prosty sposób.
Przykład
Chcę usunąć tekst z linii 45 do linii 101.
Moja metoda sugeruje wpisanie poniższego polecenia w trybie poleceń:
45Gd101G
Brzmi:
Przejdź do wiersza 45 ( 45G), a następnie usuń tekst ( d) z bieżącego wiersza do wiersza 101 ( 101G).
Zauważ, że na vimmożesz użyć ggzamiast G.
Porównaj z odpowiedzią @Bonnie Varghese, która brzmi:
:45,101d[enter]
Powyższe polecenie z jego odpowiedzi wymaga wpisania 9 razy, w tym enter, gdzie moja odpowiedź wymaga wpisania 8 - 10 razy. Zatem szybkość mojej metody jest porównywalna.
Osobiście wolę coś 45Gd101Gwięcej, :45,101dponieważ lubię trzymać się składni polecenia vi, w tym przypadku:
Naciśnij Escklawisz, aby upewnić się, że nie jesteś w trybie edycji. Umieść kursor w pierwszej linii, która ma zostać usunięta. Wejdź :5dd. Bieżący wiersz i następne cztery wiersze powinny zostać usunięte.
Alternatywnie, jeśli masz włączoną numerację linii ...
Naciśnij Escklawisz, aby upewnić się, że nie jesteś w trybie edycji. Wpisz, :#,#dgdzie „#” oznacza początkowy i końcowy numer linii do usunięcia.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.